[Reactive Extensions][Reactive Property][C#] 依存するいずれかのプロパティが変更された時に、リアクティブにプロパティを更新する
ちょっとタイトルわかりにくいですが以下のようなケースです。
A, B, C のいずれかの変数の更新がされたら自動的に X を更新したい。
更新された変数以外は最後の値を使用したい。
使用例としては、ツールバーや設定画面で特定機能の有効/無効の切り替えを行った場合に画面の再描画を行なうなどが考えられます。
どう実現するか
Reactive Property の前提技術である Reactive Extentions には CombineLatest
というそのままの機能があります。
ReactivePropertyで利用する例
ReactiveProperty で利用する場合には以下のようにします。2つ以上の場合でも問題なく利用できます。
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を更新することができます。
参考
Author And Source
この問題について([Reactive Extensions][Reactive Property][C#] 依存するいずれかのプロパティが変更された時に、リアクティブにプロパティを更新する), 我々は、より多くの情報をここで見つけました https://qiita.com/koara-local/items/17a2be2f31e42984a078著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .