c# - 如何在 c# WPF 框架中禁用导航快捷方式

标签 c# wpf keyboard keyboard-shortcuts

如何禁用框架中的导航快捷方式(例如,用于向后导航的“退格键”和用于向前导航的“Alt+右箭头”)。

我想使用其他键盘功能,所以我想禁用框架的导航快捷键。

谁能帮帮我?

最佳答案

有一个更优雅的解决方案,其中附加行为可用于禁用导航而无需实际扩展框架。

创建一个附加行为:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace A
{
    public static class DisableNavigation
    {
        public static bool GetDisable(DependencyObject o)
        {
            return (bool)o.GetValue(DisableProperty);
        }
        public static void SetDisable(DependencyObject o, bool value)
        {
            o.SetValue(DisableProperty, value);
        }

        public static readonly DependencyProperty DisableProperty =
            DependencyProperty.RegisterAttached("Disable", typeof(bool), typeof(DisableNavigation),
                                                new PropertyMetadata(false, DisableChanged));



        public static void DisableChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var frame = (Frame)sender;
                       frame.Navigated += DontNavigate;
            frame.NavigationUIVisibility = NavigationUIVisibility.Hidden;
        }

        public static void DontNavigate(object sender, NavigationEventArgs e)
        {
            ((Frame)sender).NavigationService.RemoveBackEntry();
        }
    }
}

并且在 xaml 中添加这个每当你使用一个框架时:

<Frame beha:DisableNavigation.Disable="True" />

并在 xaml 的顶部添加导入:

xmlns:beha="clr-namespace:A"

关于c# - 如何在 c# WPF 框架中禁用导航快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367876/

相关文章:

css - JavaFX 虚拟键盘的自定义 CSS 将不会加载

linux - USB 键盘和 setxkbmap

c# - RavenDB - 为什么IAsyncDocumentSession中没有DeleteAsync方法

c# - 构造函数应该将自己的参数直接初始化为私有(private)成员还是通过公共(public)字段(以 C# 为中心)?

c# - 解析.net SDK获取对象

c# - 基于单元格值的DataGrid行背景

c# - 不使用 WinForms 旋转光标

c# - 使用 bool 来同步多个线程是否安全?

c# - 如何验证 PasswordBox WPF

keyboard - 如何将键盘按下与操作联系起来