【问题标题】:WPF ComboBox: Wrong Item is displayedWPF ComboBox:显示错误的项目
【发布时间】: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 的选择在弹出列表关闭时更改,而不是在弹出窗口中的突出显示更改时更改。

标签: c# wpf mvvm combobox


【解决方案1】:

只是为了完整性:)

你必须检查你的 Equals() 覆盖并确保那不是错误的。 这些天我在列表框上遇到了同样的问题。

【讨论】:

  • 顺便说一句,请随意在我的帖子中发布两个等于(好的和坏的)方法。
猜你喜欢
  • 2018-09-06
  • 2011-09-29
  • 2013-07-11
  • 2016-03-12
  • 2011-04-19
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多