2008-10-04 4 views
4
<DataTemplate x:Key="Genre_DataTemplate"> 
     <RadioButton GroupName="One" Content="{Binding... 
</DataTemplate> 

code ci-dessus est ItemTemplate de mon ItemsControl, je veux que tous les Radiobuttons instancié doit se comporter comme si elle est dans un groupe, je connais la raison parce que les RadioButtons générés ne sont pas adjacents dans le visualtree.est-il un moyen de groupe RadioButtons provenant ItemTemplate d'un ItemsControl

Solution ou solution de contournement pour les regrouper? La propriété GroupName n'a également aucun effet ici.

[Mise à jour] J'essaie ceci dans Silverlight

Répondre

4

Le problème est que le comportement RadioButton.GroupName dépend de l'arborescence logique pour trouver un ancêtre commun et en fait étendre son utilisation à cette partie de l'arborescence, mais ItemsControl de silverlight ne gère pas l'arborescence logique. Cela signifie que, dans votre exemple, la propriété Parent de RadioButton est toujours NULL

J'ai créé un comportement joint simple pour résoudre ce problème. Il est disponible ici: http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight/

3

Je pense que le problème est ailleurs dans l'arbre de commande. Pouvez-vous poster plus de détails?

Voici un exemple de code XAML qui fonctionne comme prévu:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Grid> 
    <Grid.Resources> 
     <XmlDataProvider x:Key="flickrdata" Source="http://api.flickr.com/services/feeds/photos_public.gne?tags=flower&amp;lang=en-us&amp;format=rss_200"> 
      <XmlDataProvider.XmlNamespaceManager> 
      <XmlNamespaceMappingCollection> 
       <XmlNamespaceMapping Prefix="media" Uri="http://search.yahoo.com/mrss/"/> 
      </XmlNamespaceMappingCollection> 
      </XmlDataProvider.XmlNamespaceManager> 
     </XmlDataProvider> 
     <DataTemplate x:Key="itemTemplate"> 
     <RadioButton GroupName="One"> 
      <Image Width="75" Height="75" Source="{Binding Mode=OneWay, XPath=media:thumbnail/@url}"/> 
     </RadioButton> 
     </DataTemplate> 
     <ControlTemplate x:Key="controlTemplate" TargetType="{x:Type ItemsControl}"> 
      <WrapPanel IsItemsHost="True" Orientation="Horizontal"/> 
     </ControlTemplate> 
    </Grid.Resources> 
    <ItemsControl 
     Width="375" 
     ItemsSource="{Binding Mode=Default, Source={StaticResource flickrdata}, XPath=/rss/channel/item}" 
     ItemTemplate="{StaticResource itemTemplate}" 
     Template="{StaticResource controlTemplate}"> 
    </ItemsControl> 
</Grid> 

</Page> 

PS: Dans le regroupement des commandes pour travailler éléments boutons radio doivent avoir le même parent (comme ils l'ont généralement lorsque générés par ItemsControl)

+0

Ceci est une bonne solution pour ce problème dans WPF, rendant le controltemplate de ItemsControl en tant que Panel avec ItemsHost, mais nous n'avons pas ItemHost dans Silverlight (je ne suis pas sûr). Toute solution de contournement dans Silverlight –

Questions connexes