代码之家  ›  专栏  ›  技术社区  ›  Jobi Joy

有没有方法对从itemsControl的itemTemplate生成的单选按钮进行分组

  •  4
  • Jobi Joy  · 技术社区  · 16 年前
     <DataTemplate x:Key="Genre_DataTemplate">
            <RadioButton GroupName="One" Content="{Binding...
     </DataTemplate>
    

    上面的代码是我的itemscontrol的itemstemplate,我希望实例化的所有单选按钮都表现得像在一个组中一样,我知道原因,因为生成的单选按钮不在VisualTree中相邻。

    有任何解决方案或解决方案可以将它们组合在一起吗?.GroupName属性在此处也没有任何效果。

    [更新]我正在Silverlight中尝试此操作

    2 回复  |  直到 15 年前
        1
  •  4
  •   Karim Hernandez    15 年前

    问题是radiobutton.groupname的行为依赖于逻辑树来找到一个共同的祖先,并有效地将它用于树的该部分,但是Silverlight的itemsControl不维护逻辑树。这意味着,在您的示例中,RadioButton的Parent属性始终为空。

    我建立了一个简单的附加行为来解决这个问题。这里有: http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight/

        2
  •  3
  •   ligaz    16 年前

    我认为问题出在控制树的其他地方。你能公布更多细节吗?

    下面是一个按预期工作的示例XAML代码:

    <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>
    

    P.S.:为了按工作元素分组,单选按钮应具有相同的父级(从itemscontrol生成时通常具有相同的父级)