【问题标题】:Custom equality comparer for WPF ComboBoxWPF ComboBox 的自定义相等比较器
【发布时间】:2012-11-11 10:00:46
【问题描述】:

当我们将组合框的 SelectedItem 绑定到一个属性时,通常它会使用对象类型的 Equals 方法来确定应该在 ComboBox 视图中显示的选定项。 (例如,参见this question

是否可以为此拥有自己的比较器,而无需修改类的 equals 方法?我不想直接修改方法的原因是因为该类也用于业务逻辑,我不希望我的相等比较器影响使用同一类的其他东西

【问题讨论】:

  • 你能创建另一个从主类派生的类吗?
  • @DJ 但我无法控制将哪个实现传递给我的视图模型
  • 如何使用SelectedIndex 而不是SelectedItem。然后你可以把你的自定义比较逻辑在视图模型中找到项目的索引。
  • 为什么不使用SelectedValueSelectedValuePath 而不是SelectedItem

标签: .net wpf data-binding combobox


【解决方案1】:

我不想直接修改方法的原因是因为该类也用于业务逻辑,我不希望我的相等比较器影响使用同一类的其他东西

这通常表示需要一个包装器:

public class Wrapper<T>
{
    public override string ToString() { ... }

    public override bool Equals(object obj) { ... }

    public T UnderlyingRecord { get; set; }
}

这样你就可以正常进行,只有视图会使用包装对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2017-11-02
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多