WPFでは、同じものを公開する3つのオブジェクトがありますDependencyProperty
(整数だとしましょう)。3つのプロパティ値すべての同期を維持する必要があります。つまり、オブジェクト内でint値が変更されるたびに、この値が他の2つのオブジェクトに伝播されます。私multibinding
はその仕事をしようと思っていますが、どのオブジェクトが変更されたかを検出する方法がわかりません。したがって、どの値を使用して他のオブジェクトに伝播する必要があります。
編集済み:これがマルチバインディングの暫定コードですが、追加のコードがなくても機能するという誤った希望があります:
// create the multibinding
MultiBinding mb = new MultiBinding() {
Mode = BindingMode.TwoWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
};
// create individual bindings to associate object_2 and object_3 to object_1
Binding b2 = new Binding() {
Source = object_2,
Path = new PropertyPath("X")
};
Binding b3 = new Binding() {
Source = object_3,
Path = new PropertyPath("X")
};
// add individual bindings to multibinding
mb.Bindings.Add(b2);
mb.Bindings.Add(b3);
// bind object_2 and _3 to object_1
BindingOperations.SetBinding(object_1, TypeObject_1.XProperty, mb);
しかし実際には、最後の命令によって設定されたバインディングにコンバーターがないというランタイムエラーがあります。しかし、このコンバーターの書き方がわかりません(3つのrgbプロパティをcolorプロパティにリンクするコードの関連MSサンプルの場合のように、変換するものはありません)、変更されたプロパティの値を転送するだけです他の2つのプロパティに)。
3つのタイプでX_Changedイベントを作成し、各オブジェクトを他の2つのオブジェクトイベントに登録することで、問題を解決できることを理解しています。私はこの「手動」の方法が好きではなく、3つのプロパティを一緒にバインドしたいと思います。