#wpf #vb.net #xaml #key-bindings #inputbinding
#wpf #vb.net #xaml #привязки клавиш #привязка ввода
Вопрос:
У меня есть окно с привязками клавиш в InputBindings, определенными. Они работают в первый раз, и когда я устанавливаю фокус на любой элемент управления в форме.
Но когда отображается Messagbox и я нажимаю «OK», эти сочетания клавиш не работают, пока я не установлю фокус на элементе управления в моем окне.
Мои входные привязки:
<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:
Я также сталкивался с этой проблемой некоторое время назад, это как-то связано с фокусом вашего окна, но я действительно нашел один способ решить ее следующим образом —
<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();
}
Комментарии:
1. Это было связано с тем, что не был определен родитель / владелец Messagebox. С помощью MessageBox. Показать (я, «Сохранить») Вместо: MsgBox («Сохранить») исправил эту проблему
2. Хорошо, на самом деле в моем случае я внедрил свое пользовательское окно сообщения, и настройка отношения родитель / потомок также не сработала для меня. Вот почему я использовал описанный выше подход..