Сочетания клавиш не работают после отображения окна сообщения - PullRequest
1 голос
/ 29 апреля 2011

У меня есть окно с определенными клавишами в InputBindings. Они работают в первый раз, и когда я установил фокус на любой элемент управления в форме.

Но когда отображается Messagbox и я нажимаю "ОК", они не работают, пока я не установлю фокус на элементе управления в моем окне.

Мои входные привязки:

<Window.InputBindings>
    <KeyBinding Gesture="Ctrl+N" Command="{x:Static local:MainWindow.NewMenuCommand}" />
    <KeyBinding Gesture="Ctrl+O" Command="{x:Static local:MainWindow.OpenMenuCommand}" />
    <KeyBinding Gesture="Ctrl+S" Command="{x:Static local:MainWindow.SaveMenuCommand}" />
    <KeyBinding Gesture="Ctrl+Q" Command="{x:Static local:MainWindow.CloseMenuCommand}" />
</Window.InputBindings>

Мои командные привязки:

<Window.CommandBindings>
    <CommandBinding Command="{x:Static local:MainWindow.NewMenuCommand}" Executed="NewEntity" />
    <CommandBinding Command="{x:Static local:MainWindow.OpenMenuCommand}" Executed="OpenEntity" />
    <CommandBinding Command="{x:Static local:MainWindow.SaveMenuCommand}" Executed="SaveEntity" />
    <CommandBinding Command="{x:Static local:MainWindow.CloseMenuCommand}" Executed="CloseEntity" />
</Window.CommandBindings>

1 Ответ

1 голос
/ 29 апреля 2011

Я также сталкивался с этой проблемой некоторое время назад, это как-то связано с фокусом вашего окна, но на самом деле я нашел один хак, чтобы решить его следующим образом -

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Activated="HandleWindowActivated"
    Title="Window1" Height="300" Width="300">

И в вашем коде поставьтесосредоточиться на окне, как это -

private void HandleWindowActivated(object sender, EventArgs e)
{
    this.Focus();
} 
...