WPF Как отключить команды NavigationWindow
Я использую страницы и NavigationWindow:
navigationWindow = new NavigationWindow();
navigationWindow.Height = 200;
navigationWindow.Width = 100;
navigationWindow.WindowState = WindowState.Maximized;
page = new IntroPage();
navigationWindow.Navigate(page);
navigationWindow.Show();
Я перемещаюсь, используя методы GoBack и GoForward, но я не хочу использовать их с помощью сочетаний клавиш (функциональные кнопки мыши и т. Д.). Как отключить эти сочетания клавиш?
1 ответ
В окне навигации XAML вы можете добавить это:
<NavigationWindow.InputBindings>
<KeyBinding Key="Back" Command="NotACommand" />
<KeyBinding Key="Next" Command="NotACommand" />
<KeyBinding Key="BrowserBack" Command="NotACommand" />
<KeyBinding Key="BrowserForward" Command="NotACommand" />
<KeyBinding Key="Left" Modifiers="Alt" Command="NotACommand" />
<KeyBinding Key="Right" Modifiers="Alt" Command="NotACommand" />
</NavigationWindow.InputBindings>
В коде вы можете сделать то же самое, как это:
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.Back, ModifierKeys.None));
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.Next, ModifierKeys.None));
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.BrowserBack, ModifierKeys.None));
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.BrowserForward, ModifierKeys.None));
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.Left, ModifierKeys.Alt));
navigationWindow.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.Right, ModifierKeys.Alt));
Есть и другие ключи, которые можно предотвратить, такие как BrowserHome и BrowserRefresh.
Это предотвращает горячие клавиши, а не навигацию с помощью мыши, если отображается интерфейс навигации. Если вы хотите управлять навигацией только программно, вам следует скрыть навигационный интерфейс с помощью ShowsNavigationUI="False"
в XAML (в качестве параметра тега NavigationWindow) или с mainWindow.ShowsNavigationUI = false;
в коде.
Кроме того, вы можете предотвратить MouseBindings так же, как я делал выше для KeyBindings, добавив новые объекты MouseBinding с установленным свойством MouseAction.