0

DevExpress コントロールと MVVM with PRISM を使用する WPF アプリがあります。
DockLayoutManager の「DockOperationCompleted」イベントを使用して、次のようにビュー モデルでコマンドを呼び出しています。

    <dxd:DockLayoutManager x:Name="dockContainer">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="DockOperationCompleted">
                <i:InvokeCommandAction Command="{Binding DataContext.SaveLayoutCommand, ElementName=dockContainer}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <dxd:LayoutGroup/>
    </dxd:DockLayoutManager>

「SaveLayoutCommand」コマンドの目的は、後で復元できるようにレイアウトを保存することです。
「DockOperationCompleted」イベントは、DockItem がドッキングまたは閉じられた後に発生します (他のケースもありますが、それらは無関係です)。
問題は、メイン ウィンドウを閉じると、DockLayoutManager のドック アイテムが 1 つずつ閉じられるため、閉じたドック アイテムごとに「SaveLayoutCommand」が呼び出され、これが発生したくないことです。
イベントが発生する「DockOperationCompletedEventArgs」には、もう一度確認できる「DockOperation」プロパティがありますが、このコードが正確にどこに収まるかわかりません。

: イベントのイベント引数に基づいてコマンドが呼び出されたときに「フィルタリング」する方法はありますか?

ありがとう:)

4

2 に答える 2

1

アクションを呼び出す前に発生するイベントをフィルタリングする組み込みの方法はありません。ただし、フィルタリングを行う独自のカスタム トリガー アクションを実装できます。

残念ながら、イベント引数にアクセスしてコマンドに渡すのも簡単ではありません。この質問を参照として参照してください。

コマンドパラメータとしてEventArgsを渡すMVVM

于 2013-03-14T15:42:14.180 に答える