2012-11-23 14 views
6

コンボボックスのSelectedItemをプロパティにバインドするとき、通常、オブジェクトタイプのEqualsメソッドを使用して、コンボボックスビューに表示する必要がある選択項目を決定します。 (たとえば、this questionを参照してください)WPFコンボボックスのカスタム等価比較者

クラスのequalsメソッドを変更することなく、これに独自の比較機能を持たせることはできますか?メソッドを直接変更したくない理由は、クラスがビジネスロジックにも使用されているため、同等クラスの比較演算子が同じクラスを使用する他のオブジェクトに影響を与えないようにするためです。

+0

メインクラスから派生した別のクラスを作成できますか? –

+0

@DJしかし、どの実装が私のviewmodelに渡されるかを制御することはできません –

+0

'SelectedItem'の代わりに' SelectedIndex'を使うのはどうですか?次に、カスタム比較ロジックを配置して、ビューモデル内のアイテムのインデックスを見つけることができます。 – Lubo

答えて

1

理由「がトンクラスは、ビジネスロジックのために使用されていると私は同じクラスを使用する他のものに影響を与えるために私の等値比較子を望んでいないので、この方法は、直接これは通常必要とされているラッパーを示し

で修正したいです:

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

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

    public T UnderlyingRecord { get; set; } 
} 

このようにして、通常どおりに実行することができ、ビューだけがラッパーオブジェクトを使用します。

関連する問題