【问题标题】:WPF How to disable NavigationWindow commandsWPF 如何禁用 NavigationWindow 命令
【发布时间】:2013-08-10 22:30:18
【问题描述】:

我使用页面和 NavigationWindow:

navigationWindow = new NavigationWindow();
            navigationWindow.Height = 200;
            navigationWindow.Width = 100;
            navigationWindow.WindowState = WindowState.Maximized;
            page = new IntroPage();
            navigationWindow.Navigate(page);
            navigationWindow.Show();

我使用 GoBack 和 GoForward 方法导航,但我不想通过快捷方式(鼠标中的功能按钮等)使用它们。如何禁用这些快捷方式?

【问题讨论】:

  • 在 xaml 中是 ShowsNavigationUI="False"
  • 但是快捷方式仍然有效

标签: wpf navigationwindow


【解决方案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。

如果正在显示导航 UI,则可以防止热键,而不是鼠标导航。如果您只想以编程方式控制导航,则应在 XAML 中使用 ShowsNavigationUI="False"(作为 NavigationWindow 标记的参数)或在代码中使用 mainWindow.ShowsNavigationUI = false; 隐藏导航 UI。

此外,您可以像我在上面对 KeyBindings 所做的那样防止 MouseBindings,添加带有 MouseAction 属性集的新 MouseBinding 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多