4

テストシナリオ:

OneWayToSource Binding を使用してコントロールの A プロパティに対してバインドするプロパティ A を持つ ViewModel があります。Binding は Control によって明示的に更新されます。

バインドされた ViewModel インスタンスを実行時に切り替えて、Binding の基になる Source を変更します。これが発生したら、DependencyProperty A の値を更新できるようになったことをコントロールに通知するイベントを発生させたいと思います。その理由は、バインドされた ViewModel を変更するとすぐに、DependencyProperty A の DefaultValue がソースに書き込まれるためです。代わりに、コントロールが適切な値を見つけて、ソースを手動で更新することを望みます。

DataContextChanged イベントをリッスンするだけで問題が解決すると考える人もいるかもしれません。ただし、このイベントが発生すると、BindingExpression の Source は依然として古い ViewModel を指しています。

私が思い付くことができる唯一のハックアラウンドは、DataContextChanged の EventHandler で DispatcherPriority.DataBind 優先順位で Dispatcher.BeginInvoke を使用することです。

それは機能しますが、私にはきれいに感じません。

ソースの変更を通知する Binding クラスのイベントを探していますが、見つかりません。

ありがとうございました

4

1 に答える 1

0

おそらく私は質問を完全には理解していませんが、NotifyOnSourceUpdatedまたはNotifyOnTargetUpdatedプロパティ (および対応するSourceUpdatedまたはTargetUpdatedイベント) を使用できますか?

于 2012-08-09T18:01:34.340 に答える