EventTrigger に関連付けられた InvokeCommandAcction を使用すると、元のイベントが処理されるまで親要素にルーティングされていることに気付きました。うーん、これは想定内の動作だと思います。しかし、私の質問は、イベントを処理済みとしてマークして、UI ツリー全体に伝播しないようにする方法です。
実際には、このイベントをコマンドで処理すると、すべてがこのコマンドで処理されるため、伝播する必要はありません。そして、私が見つけたあるコーナーケースでは、それはいくつかの望ましくない動作を引き起こします. たとえば、ユーザーが要素をダブルクリックすると (MouseDoubleClick イベント)、新しいウィンドウが開きます。問題は、MouseDoubleClick イベントが UI ツリーの最上位要素に到達したばかりであるため、新しいウィンドウが開き、メイン ウィンドウが新しいウィンドウの前に戻ってくることです。必要な動作は、新しいウィンドウを前面に保持することですが、InvokeCommandAction によってイベントが伝播されるため、メイン ウィンドウがフォーカスを取り戻します...
私ができることは、代わりに CallMethodAction アセットを使用することですが、私は MVVM シナリオにいるので、コードに UI イベント引数は必要ありません。これにより、暗黙的にイベントを処理済みとしてマークし、問題を修正できたとしても。
<UserControl x:Class="..."
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding Path=DisplayReportCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
...
</UserControl>