ちょっとタイトルわかりにくいですが以下のようなケースです。
A, B, C のいずれかの変数の更新がされたら自動的に X を更新したい。
更新された変数以外は最後の値を使用したい。
使用例としては、ツールバーや設定画面で特定機能の有効/無効の切り替えを行った場合に画面の再描画を行なうなどが考えられます。
どう実現するか
Reactive Property の前提技術である Reactive Extentions には CombineLatest
というそのままの機能があります。
ReactivePropertyで利用する例
ReactiveProperty で利用する場合には以下のようにします。2つ以上の場合でも問題なく利用できます。
ReactiveProperyで利用する例
RxPropA = model.PropA.ToReactiveProperty();
RxPropB = model.PropB.ToReactiveProperty();
RxPropC = model.PropC.ToReactiveProperty();
ReadOnlyRxPropX = RxPropA
.CombineLatest(RxPropB, RxPropC, (rxPropA, rxPropB, rxPropC) => ConvertToX(rxPropA, rxPropB, rxPropC))
.ToReadOnlyReactiveProperty();
これでA, B, Cのいずれかの状態更新でリアクティブにXを更新することができます。