C# WPF组合框:显示错误的项目
这是最初的情况: XAML:C# WPF组合框:显示错误的项目,c#,wpf,mvvm,combobox,C#,Wpf,Mvvm,Combobox,这是最初的情况: XAML: 视图模型: public Collection<MyObjects> ObjectSource { get { return this.objectSource; } set { this.SetProperty(ref this.objectSource, value); } } 公共集合对象源 { 得到 { 返回此.objectSource; } 设置 { thi
视图模型:
public Collection<MyObjects> ObjectSource
{
get
{
return this.objectSource;
}
set
{
this.SetProperty(ref this.objectSource, value);
}
}
公共集合对象源
{
得到
{
返回此.objectSource;
}
设置
{
this.SetProperty(参考this.objectSource,值);
}
}
“我的对象”包含一个名称(字符串)、有效起始日期(dateTime)和一个displayText(仅限字符串get),它们组合了用于显示的名称和有效起始日期
在这种简单的情况下,我能够打开组合框并查看所有条目,在选择一个之后,它还会在组合框内显示正确的displaytext。
现在我再次打开下拉区域并选择其他条目。
结果是选中的项目被切换(当再次打开下拉条目时,您可以看到高亮显示的项目)。但是组合框中显示的项目没有改变,仍然有第一个选择的DisplayText
有人知道为什么组合框不更新吗?
提前谢谢
编辑:
谢谢大家的帮助。问题是覆盖Equals的错误。只是为了完整性:)
您必须检查您的Equals()覆盖,并确保没有问题。
这些天我在列表框上也遇到了同样的问题。你是否覆盖了Equals?我已经检查了你的问题,但在我的情况下,一切都正常。可能是因为你的组合框被刷新了,或者可能是你的集合。所以只需使用断点进行检查。在我的列表框上,一切都正常系统。@blindmeis:是的,另一个devolper overide在我们的基类中是相等的。组合框调用它来比较这两个元素吗?你说你正在选择另一个条目,但在屏幕截图中你还没有更改选择。组合框的选择在弹出列表关闭时更改,而不是在弹出窗口中的突出显示更改时更改。顺便说一句,请在我的帖子中发布equals(好的和坏的)方法。
public Collection<MyObjects> ObjectSource
{
get
{
return this.objectSource;
}
set
{
this.SetProperty(ref this.objectSource, value);
}
}