如何禁用框架中的导航快捷方式(例如,用于向后导航的“退格键”和用于向前导航的“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/