#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 в вопросе. В любом случае, будет проще добавить другое свойство и также привязать отмеченное свойство. Я отредактировал свой ответ.