1

CommandBinding.previewcanexecute イベントのトンネリングの使用は何ですか?

CommandBinding.canexecute イベントのバブリング ?? どのように役立ちますか

4

1 に答える 1

0

トンネリング イベントとバブリング イベントにより、ハンドラーを複数の要素間で共有し、階層の上位にあるコントロールによってインターセプトすることができます。たとえば、次の Xaml があるとします。

<StackPanel>
   <Button Command="MyCommand" />
   <Button Command="MyCommand" />
   <Button Command="MyCommand" />
   <Button Command="MyCommand" />
</StackPanel>

すべてのボタンに影響する単一CommandBindingの forを定義したい場合は、 . 各ボタンがそのコマンドを実行しようとすると、イベントは上向きにバブリングします。つまり、4 つのボタンに対して 1 つのハンドラーしか必要ありません。ルートレベルにハンドラーを配置すると、アプリケーション内のすべてのボタンに適用されます。MyCommandStackPanelStackPanelWindow

逆に、イベントをトンネリングすると、イベントを発生させたコントロールに到達する前にイベントをインターセプトできます。したがって、たとえば、全体ですべてのボタンのコマンドを無効にしたい場合、トンネリング イベントを使用してこれを行うことができ、ボタンは常に を返すWindowことがわかります。CanExecutefalse

于 2012-08-01T14:50:16.497 に答える