【发布时间】:2014-06-17 14:02:59
【问题描述】:
足够简单的要求 - 尝试在用户按下“清除”按钮时重置 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 键。无论如何,当您按清除时,该值不会从其选择中改变。
我尝试将 int 设置为 0 并在 XAML 中设置 UpdateSourceTrigger=PropertyChanged,但无济于事。我不愿意将RequestingMemeber 更改为int? 的类型,因为它需要在很长一段时间内级联到应用程序的其他部分的修复。
我做错了什么?
【问题讨论】:
-
为什么要绑定索引?为什么不绑定到
SelectedItem?这样,当您想清除它时,您可以将其清空。处理索引更复杂,不会给您带来任何好处:/ -
您使用“-1”这一事实让我觉得您将
SelectedValue与SelectedIndex混淆了。如果组合框是可编辑的,它可以是 any 字符串,而不仅仅是下拉列表中的值;即你应该绑定到Text。