无法清除组合框中的选定项

本文关键字:清除 组合 | 更新日期: 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属性,而不是使用SelectedValueSelectedValuePath属性,您将获得更多的运气。尝试添加与集合中的项类型相同的属性,并将其绑定到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;