Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF组合框:显示错误的项目_C#_Wpf_Mvvm_Combobox - Fatal编程技术网

C# WPF组合框:显示错误的项目

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

这是最初的情况:

XAML:


视图模型:

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);
    }
}