无法清除组合框中的选定项
本文关键字:清除 组合 | 更新日期: 2023-09-27 18:08:54
足够简单的要求-尝试在用户按下"clear"按钮时重置WPF组合框。除了这个ComboBox外,表单上的其他所有内容都按预期清除。
<ComboBox ItemsSource="{Binding Members}" DisplayMemberPath="MemberName" SelectedValue="{Binding RequestingMember, Mode=TwoWay}" SelectedValuePath="MemberID" IsEditable="{Binding FixedRequestingMember }"></ComboBox>
这是它绑定的属性:
public int RequestingMember
{
get { return _requestingMember; }
set
{
if (_requestingMember != value)
{
_requestingMember = value;
}
}
}
下面是我用来清除方框的代码:
this.RequestingMember = -1;
值得一提的是,Members集合中没有对应于键值为-1的元素。无论如何,当你按clear键时,该值不会改变它的选择。
我尝试将int
设置为0,并在XAML中设置UpdateSourceTrigger=PropertyChanged
,但无济于事。我讨厌将RequestingMemeber
更改为int?
类型,因为它需要修复级联到应用程序的其他部分。
我做错了什么?
请阅读MSDN上的Use SelectedValue, SelectedValuePath和SelectedItem页面以获取有关此的完整信息,但简而言之,通过数据绑定到SelectedItem
属性,而不是使用SelectedValue
和SelectedValuePath
属性,您将获得更多的运气。尝试添加与集合中的项类型相同的属性,并将其绑定到SelectedItem
属性:
public Member SelectedMember // Implement the INotifyPropertyChanged Interface here!!
{
get { return selectedMember; }
set
{
if (selectedMember != value)
{
selectedMember = value;
NotifyPropertyChanged("SelectedMember");
}
}
}
您还需要在类中使用属性实现INotifyPropertyChanged
接口。您的XAML现在看起来应该像这样:
<ComboBox ItemsSource="{Binding Members}" DisplayMemberPath="MemberName"
SelectedItem="{Binding SelectedMember, Mode=TwoWay}"
IsEditable="{Binding FixedRequestingMember }" />
现在你需要做的就是清除选区:
SelectedMember = null;