1

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つのプロパティを一緒にバインドしたいと思います。

4

1 に答える 1

0

実は2週間以内に誰も解決策を見つけることができなかったので、何もないと思います。いつかこんな感じ…

于 2010-03-26T22:41:28.763 に答える