Есть ли способ сгруппировать RadioButtons, сгенерированные из ItemTemplate ItemsControl - PullRequest
4 голосов
/ 04 октября 2008
 <DataTemplate x:Key="Genre_DataTemplate">
        <RadioButton GroupName="One" Content="{Binding...
 </DataTemplate>

Выше кода - ItemTemplate моего ItemsControl, я хочу, чтобы все экземпляры Radiobutton'ов работали так, как если бы они были в группе, я знаю причину, потому что сгенерированные RadioButton не смежны в дереве визуалов.

Любое решение или обходной путь, чтобы сгруппировать их вместе? Свойство GroupName также не оказывает здесь никакого влияния.

[Обновить] Я пробую это в Silverlight

Ответы [ 2 ]

4 голосов
/ 09 марта 2009

Проблема в том, что поведение RadioButton.GroupName зависит от логического дерева, чтобы найти общего предка и эффективно использовать его для этой части дерева, но ItemsControl silverlight не поддерживает логическое дерево. Это означает, что в вашем примере свойство Parent RadioButton всегда равно null

Я построил простое прикрепленное поведение, чтобы исправить это. Это доступно здесь: http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight/

3 голосов
/ 04 октября 2008

Я думаю, проблема в другом дереве управления. Можете ли вы опубликовать более подробную информацию?

Вот пример кода 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...