ということで、前回さくっと書いたのですが普通に書くとどうなるか・・・?
// 普通 this.EditCommand .Subscribe(_ => { var vm = new EditWindowViewModel(this.SelectedItem.Value); this.ShowEditWindowRequest.Raise( new Notification { Title = vm.EditTargetViewModel.Value.Name.Value + " Editing", Content = vm }, n => { // ここにいろいろ処理をかく }); });
// 前回のコード this.EditCommand // 選択項目から編集画面用のVM作って .Select(_ => new EditWindowViewModel(this.SelectedItem.Value)) // InteractionRequest経由で編集画面を表示 .SelectMany(vm => // ShowEditWindowRequestはInteractionRequest<Notification>型のプロパティ // XAML側でウィンドウを表示するTriggerActionと紐づけてるイメージ this.ShowEditWindowRequest.RaiseAsObservable( new Notification { Title = vm.EditTargetViewModel.Value.Name.Value + " Editing", Content = vm })) .Subscribe(n => { var vm = n.Content as EditWindowViewModel; // 結果を受けて何なりと処理をやる // 主にModelへの委譲 });
うん、自己満足な気がしてきた。でも、処理を書き出す時点でのネストの深さが深くなるからコールバックはやっぱきらいかも。