メニューとボタンを使用した次の例を考えてみましょう。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="Paste" Command="ApplicationCommands.Paste" />
</Menu>
<Button Command="ApplicationCommands.Paste">Paste</Button>
<TextBox>Content</TextBox>
<TextBox>Content2</TextBox>
</DockPanel>
</Window>
テキスト ボックスの 1 つにキーボード フォーカスを置くと、TextBox は を処理できると宣言するApplicationCommands.Paste
ので、ボタンとメニュー項目が有効になることを期待します。代わりに得られるのは、メニュー項目が有効になり、ボタンが有効にならないということです。TextBox
(ボタンは'を「リッスン」しているようには見えませんCommandBinding
)
ここで何が起こっているのでしょうか。これを回避する方法はありますか?
編集:私はこの質問を見つけました-> WPFルーティングコマンドの有効化はメニューでは機能しますが、ボタンでは機能しません<--しかし、これはこの場合には適していません。ボタンはキーボードでフォーカス可能であってはならず、フォーカス範囲として設定するとフォーカス可能になります。実際のソースはキーボード フォーカスで制御する必要があるため、ソースをバインドできません。