以下の内容はhttps://blog.okazuki.jp/entry/20111019/1318999322より取得しました。


PrismとReactivePropertyのつなぎ その2

ということで、前回さくっと書いたのですが普通に書くとどうなるか・・・?

// 普通
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への委譲
    });

うん、自己満足な気がしてきた。でも、処理を書き出す時点でのネストの深さが深くなるからコールバックはやっぱきらいかも。




以上の内容はhttps://blog.okazuki.jp/entry/20111019/1318999322より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14