5

特定の値コンバータークラスが使用されているバインディングごとに、個別のWPF値コンバーターオブジェクトがインスタンス化されていますか?


双方向のビットからブール値へのコンバーターを作成しようとしています。boolプロパティ(などIsChecked)を値型(など)のビットにバインドできるようにしたいと思いushortます。コンバーターのparameter引数を使用してビットを指定しています。ConvertBack()メソッドの実装は簡単ですが、Convert()は少し注意が必要です。

Convert()では、関心のある1ビットだけを切り替えることができるように、全体の値を知る必要がありushortます。ConvertBack()のたびに、値コンバータークラスのメンバー変数を使用してこれを一時的に格納することを考えていました。が呼び出されるため、上記の質問につながります。各バインディングは独自の値コンバータインスタンスを取得しますか?

4

2 に答える 2

4

リソースで定義されたコンバーターを使用する場合、それはプロパティ間で共有されます。

一意のコンバーターが必要な場合:ただし、プロパティに特定のコンバーターを作成した場合、そのコンバーターは共有されません。どちらのオプションも実行可能です。リソースで複数のコンバーター(同じタイプで、キーが異なる)を使用することもできます。これにより、一意のインスタンスが作成されます。

于 2010-01-14T21:21:07.360 に答える
2

コンバーターにコンストラクターとデストラクターを作成し、その中にブレークポイントを設定して確実に伝えます。簡単な例を作成しましたが、コンストラクターを使用していた複数のビューモデルに対して1つのコンバーターのみが作成されたようです。

于 2010-01-14T21:17:21.483 に答える