gpt4 book ai didi

c# - 无法清除组合框中的选择

转载 作者:行者123 更新时间:2023-12-03 10:36:46 25 4
gpt4 key购买 nike

足够简单的要求 - 尝试在用户按下“清除”按钮时重置 WPF 组合框。表单上的所有其他内容都按预期清除,但此 ComboBox 除外。

<ComboBox ItemsSource="{Binding Members}" DisplayMemberPath="MemberName" SelectedValue="{Binding RequestingMember, Mode=TwoWay}" SelectedValuePath="MemberID" IsEditable="{Binding FixedRequestingMember }"></ComboBox>

这是它绑定(bind)的属性:
    public int RequestingMember
{
get { return _requestingMember; }
set
{
if (_requestingMember != value)
{
_requestingMember = value;
}
}
}

这就是我用来清除盒子的东西:
this.RequestingMember = -1;

值得一提的是,Members 集合中没有任何内容对应于 -1 的键。无论如何,当您按清除时,该值不会从其选择中改变。

我试过设置 int为 0 并设置 UpdateSourceTrigger=PropertyChanged在 XAML 中,无济于事。我讨厌改变 RequestingMemeber类型为 int?因为它需要很长一段时间级联到应用程序的其他部分的修复。

我究竟做错了什么?

最佳答案

请阅读 Use SelectedValue, SelectedValuePath, and SelectedItem有关这方面的完整信息,请访问 MSDN 页面,但简而言之,通过数据绑定(bind)到 SelectedItem,您将获得更多运气。属性,而不是使用 SelectedValueSelectedValuePath特性。尝试向 SelectedItem 添加与集合和数据绑定(bind)中的项目相同类型的属性改为属性:

public Member SelectedMember // Implement the INotifyPropertyChanged Interface here!!
{
get { return selectedMember; }
set
{
if (selectedMember != value)
{
selectedMember = value;
NotifyPropertyChanged("SelectedMember");
}
}
}

您还需要实现 INotifyPropertyChanged Interface在你的类中使用属​​性。您的 XAML 现在应该如下所示:
<ComboBox ItemsSource="{Binding Members}" DisplayMemberPath="MemberName" 
SelectedItem="{Binding SelectedMember, Mode=TwoWay}"
IsEditable="{Binding FixedRequestingMember }" />

现在您需要做的就是清除选择:
SelectedMember = null;

关于c# - 无法清除组合框中的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com