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

6
这是最初的情况:
XAML:
<ComboBox Grid.Row="0"
           Grid.Column="1"
           Margin="0,3"
           HorizontalAlignment="Stretch"
           DisplayMemberPath="DisplayText"
           ItemsSource="{Binding ObjectSource}" />

ViewModel:

public Collection<MyObjects> ObjectSource
{
    get
    {
        return this.objectSource;
    }

    set
    {
        this.SetProperty(ref this.objectSource, value);
    }
}

我的对象包含名称(字符串)、有效时间(日期时间)和显示文本(仅获取字符串),用于组合名称和有效时间进行显示。
在这种简单的情况下,我可以打开组合框并查看所有条目,在选择一个条目后,它也会在组合框中显示正确的显示文本。 现在我再次打开下拉区域并选择另一个条目。 结果是所选项已切换(当再次打开下拉条目时,可以看到高亮显示的项目)。但是组合框内显示的项目未更改,仍然是第一次选择的DisplayText。
有人能告诉我为什么组合框不会更新吗? 提前感谢!
编辑: 感谢大家的帮助。问题是Equals的错误覆盖。

我已经检查了你的问题,但在我的情况下一切都正常运行。可能存在一个问题,即你的组合框正在被刷新,或者可能是你的集合。因此,请使用断点进行检查。 - loop
我的系统完全正常工作。 - Rajeev Ranjan
@blindmeis:是的,另一个开发人员在我们的基类中覆盖了equals。这个组合框调用它来比较两个元素吗? - Sukram
2
你说你正在选择另一个条目,但在截图中你还没有改变选择。ComboBox的选择在弹出列表关闭时改变,而不是在弹出窗口中的高亮更改时。 - John Bowen
@blindmeis:你说得对,他调用了Equals方法,但是有一个错误的重写。 - Sukram
显示剩余2条评论
1个回答

2

为了完整性 :)

你需要检查你的Equals()方法重写,确保它没有错误。 我最近在使用listbox时也遇到了相同的问题。


顺便说一句,在我的帖子中,随意发布好的和不好的方法。 - blindmeis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接