CommandBinding.previewcanexecute イベントのトンネリングの使用は何ですか?
CommandBinding.canexecute イベントのバブリング ?? どのように役立ちますか
CommandBinding.previewcanexecute イベントのトンネリングの使用は何ですか?
CommandBinding.canexecute イベントのバブリング ?? どのように役立ちますか
トンネリング イベントとバブリング イベントにより、ハンドラーを複数の要素間で共有し、階層の上位にあるコントロールによってインターセプトすることができます。たとえば、次の Xaml があるとします。
<StackPanel>
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
</StackPanel>
すべてのボタンに影響する単一CommandBinding
の forを定義したい場合は、 . 各ボタンがそのコマンドを実行しようとすると、イベントは上向きにバブリングします。つまり、4 つのボタンに対して 1 つのハンドラーしか必要ありません。ルートレベルにハンドラーを配置すると、アプリケーション内のすべてのボタンに適用されます。MyCommand
StackPanel
StackPanel
Window
逆に、イベントをトンネリングすると、イベントを発生させたコントロールに到達する前にイベントをインターセプトできます。したがって、たとえば、全体ですべてのボタンのコマンドを無効にしたい場合、トンネリング イベントを使用してこれを行うことができ、ボタンは常に を返すWindow
ことがわかります。CanExecute
false