.net WPF组合框的自定义相等比较器

.net WPF组合框的自定义相等比较器,.net,wpf,data-binding,combobox,.net,Wpf,Data Binding,Combobox,当我们将组合框的SelectedItem绑定到属性时,通常它将使用对象类型的Equals方法来确定应显示在组合框视图中的选定项。(例如,见) 有没有可能拥有自己的比较器,而不需要修改类的equals方法?我不想直接修改该方法的原因是,该类也用于业务逻辑,我不希望我的相等比较器影响使用同一类的其他内容 我不想直接修改该方法的原因是,该类也用于业务逻辑,我不希望我的相等比较器影响使用同一类的其他内容 这通常表示需要一个包装器: public class Wrapper<T> {

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

有没有可能拥有自己的比较器,而不需要修改类的equals方法?我不想直接修改该方法的原因是,该类也用于业务逻辑,我不希望我的相等比较器影响使用同一类的其他内容

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

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

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

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

    public T UnderlyingRecord { get; set; }
}
公共类包装器
{
公共重写字符串ToString(){…}
公共覆盖布尔等于(对象对象对象){…}
公共T underyingrecord{get;set;}
}

通过这种方式,您可以正常进行,只有视图才会使用包装器对象。

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