メインウィンドウに「ContentControl」というWPFアプリケーションがあり、ツリービュー、メニュー、およびデータグリッドがあります。 File-Openを実行すると、それらのファイルが読み込まれます。ショートカットキーの問題 - 時にはうまくいかない - フォーカスの問題?
私は約1日を費やして、キーバインドを動作させようとしました。バインディングはユーザーコントロールにありますが、メインウィンドウ(これは私が持っているシンプルなアプリケーション)に入れない限り、問題に陥る可能性がある(http://blogs.southworks.net/geoff/2011/03/15/wpfshortcutkeys/)と読んでいます。
今日、私はメインウィンドウにテストコマンドを入れました。それはちょっといいです - ショートカットは、アプリケーションを起動するときに機能しますが、File-Open(または他のアクション)を使用した後は機能しません。私は "Snoop"を使って、フォーカスがどの要素にも設定されていないことを知ることができます。動作していないときは "null"ですが、起動時には "null"です。
「スヌープ」は、ショートカットキーを押したときに[イベント]タブに何も表示されません。フォーカスがあるようにコントロールをクリックすると、イベントが再び表示されます。
これは、何かが焦点を得ているかのようです。
私は、メインウィンドウのテキストブックXAMLのビットを持っている -
<Window ... Height="400" Width="772" Focusable="False" IsTabStop="False">
<Window.Resources>
<DataTemplate DataType="{x:Type vm:MainWindowContentViewModel}">
<local:MainWindowContent/>
</DataTemplate>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="Close"
CanExecute="CloseCanExecute"
Executed="CloseExecuted" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="A"
Modifiers="Control"
Command="Close" />
</Window.InputBindings>
<ContentControl x:Name="_contentControl"/>
</Window>
の背後にあるコードは、(インターネットのどこかでそれを切った!)も非常に退屈です。
private void HelpCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Hey, I'm some help.");
e.Handled = true;
}
のICommandのものを使用しますが、私はそれが焦点と同じ問題を持っているようなものを試してみて、簡単にするために、この簡単なヘルプコマンドを追加しました私の命令のほとんどで別の合併症があります。 (私はKeybinding a RelayCommandからコードを使用してそれを得る!)
何かヒント?
ありがとうございました。それがデフォルトtrueで、それがスタイル/のControlTemplateを持っていないので、それはフォーカスがあるとき、あなたは見ることができない -
ピーターは
フォーカスを手動で設定しても問題ありませんか? – Code0987
@Peter Smithson、ファイルダイアログを開いた後にthis.Focus()をWindow.xaml.csで実行した後に動作しましたか? –