4
 <DataTemplate x:Key="Genre_DataTemplate">
        <RadioButton GroupName="One" Content="{Binding...
 </DataTemplate>

上記のコードは、ItemsControl の ItemTemplate です。インスタンス化されたすべての Radiobuttons がグループ内にあるかのように動作する必要があります。生成された RadioButtons が visualtree で隣接していないため、その理由はわかっています。

それらをグループ化するための解決策または回避策はありますか? GroupName プロパティもここでは効果がありません。

[更新] Silverlightでこれを試しています

4

2 に答える 2

4

問題は、RadioButton.GroupName の動作が論理ツリーに依存して共通の祖先を見つけ、その使用範囲をツリーのその部分に効果的に限定することですが、silverlight の ItemsControl は論理ツリーを維持しません。これは、あなたの例では、RadioButton の Parent プロパティが常に null であることを意味します

これを修正するために、簡単な添付ビヘイビアを作成しました。ここから入手できます: http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight/

于 2009-03-08T21:10:54.377 に答える
3

問題はコントロールツリーのどこかにあると思います。詳細を投稿できますか?

期待どおりに機能するサンプル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>

PS:作業要素にグループ化するには、ラジオボタンの親が同じである必要があります(ItemsControlから生成された場合と同じように)

于 2008-10-04T16:54:05.287 に答える