我在 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;
它们无声地失败——不抛出异常,但 UI 不显示正在选择的项目。