更新通知をRxで横流しするのはいい考えじゃないかなと思って最近コードを改めてる
要は、INotifyPropertyChangedインターフェイスを実装しているメンバーについて、
- PropertyChangedイベントをハンドルして
- 同じ名前のプロパティを受け付けにしてお
これで、めんどくさい更新通知機能の実装が少しだけ楽になります*1。
具体的にはこんな感じです。(Livet使ってます)
var d = Observable.FromEventpatern<PropertyChangedEventHandler, PropertyChangedEventArgs>( h => Hoge.PropertyChanged += h, h => Hoge.PropertyChanged -= h) .Select(e => e.EventArgs.PropertyName) .SubscribeOn(DispatherHelper.UIDispather) .Subscribe(RaisePropertyChanged); CompositeDisposable.Add(d);
これを初期化するときにやっておいて、プロパティの名前をそろえておけば更新通知を横流しできます。偉い人はとっくの昔にやってるんだろうけど、これに気づいたときは「はっ」となりました。