【发布时间】:2013-07-14 14:41:15
【问题描述】:
这是初始情况:
XAML:
<ComboBox Grid.Row="0"
Grid.Column="1"
Margin="0,3"
HorizontalAlignment="Stretch"
DisplayMemberPath="DisplayText"
ItemsSource="{Binding ObjectSource}" />
视图模型:
public Collection<MyObjects> ObjectSource
{
get
{
return this.objectSource;
}
set
{
this.SetProperty(ref this.objectSource, value);
}
}
My Objects 包含一个名称(字符串),从 (dateTime) 有效和一个 displayText(仅获取字符串),它们结合了名称和有效从用于显示。
在这种简单的情况下,我可以打开组合框并查看所有条目,选择一个后,它还会在组合框中显示正确的显示文本。 现在我再次打开下拉区域并选择另一个条目。 结果是所选项目切换(再次打开下拉条目时可以看到突出显示的项目)。但是combobox里面显示的item没有变化,还是有第一次选择的DisplayText。
有人知道为什么组合框不更新吗? 提前致谢
编辑: 感谢大家的帮助。问题是 Equals 的错误覆盖。
【问题讨论】:
-
您是否覆盖了 Equals?
-
我已经检查了您的问题,但在我的情况下,一切正常。thr 可能是一个问题,您的组合框正在以某种方式刷新,或者它可能是您的集合。所以只需使用 break 来检查它点..
-
在我的系统上绝对一切正常。
-
@blindmeis:是的,我们的基类中的另一个 devolper overide equals。组合框是否调用它来比较两个元素?
-
您说您正在选择另一个条目,但在屏幕截图中您尚未更改选择。 ComboBox 的选择在弹出列表关闭时更改,而不是在弹出窗口中的突出显示更改时更改。