Как отменить проверку переключателей, которые отображаются в ItemsControl?

#silverlight

#серебристый свет #silverlight

Вопрос:

Я определяю ItemControl, который содержит переключатель.

        <ItemsControl x:Name="items" ItemsSource="{Binding Path=myItemList}" >
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <RadioButton Content="{Binding Path=Key}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
  

Теперь я хочу отменить проверку всех RadioButton, содержащихся в ItemsControl.
Я хочу написать какой-нибудь метод, который отменит проверку всех этих RadioButton.
Как я могу это сделать ?

Спасибо за любую помощь…

Ответ №1:

Я решаю проблему, и это код …

 foreach( var item in myItemList.Items )
        {
            DependencyObject presenter = CategoryBar.ItemContainerGenerator.ContainerFromItem( item );

            RadioButton t = VisualTreeHelper.GetChild( presenter, 0 ) as RadioButton;

            if( t != null amp;amp; t.IsChecked == true )
            {
                t.IsChecked = false;
            }
        }
  

Ответ №2:

Я вижу, что переключатели привязаны к myItemList . Добавьте другое свойство (для примера с именем IsChecked .) Запустите метод на myItemList и установите для всех IsChecked свойств значение false.

Убедитесь, что IsChecked свойство вызывает PropetyChangedEvent.

Например:

Если myItemList есть List(of Bla) и Bla имеет свойство Key и IsChecked . Простой цикл For each может выполнить эту работу:

 For Each blaItem as Bla in myItemList
   blaItem.IsChecked = false
Next
  

Xaml выглядит следующим образом:

 <ItemsControl x:Name="items" ItemsSource="{Binding Path=myItemList}" >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <RadioButton Content="{Binding Path=Key}" Checked="{Binding Path=IsChecked}/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
  

Комментарии:

1. myItemList — это список, содержащий объект, для которого одно из свойств объекта является ключевым, поэтому я не могу отменить проверку запуска в myItemList

2. Как я уже говорил ранее… элементы myItemList содержат элемент blaItem. Ключ, но это не объект bool ( ! ) ==> это строка, которая будет привязана к RadioButton в качестве содержимого RadioButton (это означает строку, которая будет отображаться в переключателе)

3. В этом случае вы можете просто использовать преобразователь строки в логическое значение для привязки, чтобы решить эту проблему. Смотрите следующую ссылку: msdn.microsoft.com/en-us/library /…

4. Спасибо, Майкл, но это не то, что мне нужно. мне просто нужно знать, как сканировать дочерний объект GUI, найти нужный элемент и отменить его проверку.

5. Я понимаю, извините за недоразумение, но вы не упомянули объекты GUI в вопросе. В любом случае, будет проще добавить другое свойство и также привязать отмеченное свойство. Я отредактировал свой ответ.