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.

Другие вопросы по тегам