У меня проблемы с получением списка радиокнопок с привязкой к данным в WPF, чтобы реагировать на ввод пользователя и отражать изменения данных, с которыми он связан (т. Е. Вносить изменения в код). Пользовательская сторона ввода работает нормально (то есть, я могу выбрать радиокнопку, и список ведет себя как положено). Но каждая попытка изменить выбор в коде терпит неудачу. Тихо (т.е. не исключение).
Вот соответствующий раздел XAML (я думаю):
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}" >
<Setter Property="Margin" Value="2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Name="theBorder" Background="Transparent">
<RadioButton Focusable="False" IsHitTestVisible="False"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" >
<ContentPresenter />
</RadioButton>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
Я связываю список со списком объектов SchoolInfo. SchoolInfo содержит свойство IsSelected:
public bool IsSelected
{
get { return isSelected; }
set
{
if( value != isSelected )
{
isSelected = value;
this.OnPropertyChanged("IsSelected");
}
}
}
Материал OnPropertyChanged () был чем-то, что я добавил во время своих экспериментов. Это не решает проблему.
Вещи, подобные следующим, терпят неудачу:
((SchoolInfo) lbxSchool.Items[1]).IsSelected = true;
lbxSchool.SelectedIndex = 1;
Они молча терпят неудачу - исключение не выдается, но пользовательский интерфейс не показывает выбранный элемент.