コマンド付きのボタンを含むツールバー付きのウィンドウがあります。ツールバーをボタンを含むスタックパネルに置き換えたため、ボタンが機能しなくなりました。
私の理解では、この音は何の違いもありません。ボタンにはまだCommandプロパティが設定されており、カスタムコマンドクラスでは何も変更せず、CommandBindingも同じです。これらは、ボタンよりも深いグリッドとユーザーコントロールに実装されていますが、ボタンがツールバーコントロールにある限り、機能します。
CommandBindingをウィンドウに直接実装すると、機能します(ただし、それは私が望んでいることではありません)
コードは次のとおりです(要約):
<Window>
<Grid>
<StackPanel>
<Button Command="gui:GuiCommands.Hello">Hello</Button>
</StackPanel>
<Grid>
<TabControl>
<TabItem Header="MyTab">
<Grid>
<Grid.CommandBindings>
<CommandBinding Command="gui:GuiCommands.Hello" Executed="hello_Clicked"/> <!-- THIS WOULD NOT WORK -->
</Grid.CommandBindings>
<Grid>
</TabItem>
</TabControl>
</Grid>
</Grid>
<Window.CommandBindings>
<CommandBinding Command="gui:GuiCommands.Hello" Executed="hello_Clicked"/> <!-- THIS WOULD WORK -->
</Window.CommandBindings>
</Window>
私はそれがコンパイルされないことを知っていますが、私はそれを単純化する必要がありました。これは、アプリで「StackPanel」を「ToolBar」に置き換えるとすぐに機能します。どうしてそれができるのでしょうか?