本文介绍了如何在框架 c# WPF 中禁用导航快捷方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何禁用框架中的导航快捷方式(例如,用于向后导航的Backspace"和用于向前导航的Alt+右箭头").
How can I disable the navigation shortcuts in a frame (for example the "Backspace" for navigation backward and "Alt+Right arrow" for navigation forward).
我想使用其他键盘功能,所以我想禁用框架的导航快捷键.
I want to use other keyboard functions, so I want to disable the navigation shortcuts of the frame.
谁能帮帮我?
推荐答案
有一个更优雅的解决方案,可以使用附加行为来禁用导航,而无需实际扩展框架.
there is a more elegant solution where Attached behaviours can be used to disable navigation without actually extending a frame.
创建附加行为:
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 中添加这个每当你使用一个框架:
And in the xaml add this whenever you use a frame :
<Frame beha:DisableNavigation.Disable="True" />
并在 xaml 顶部添加导入:
and at the top of the xaml add the import :
xmlns:beha="clr-namespace:A"
这篇关于如何在框架 c# WPF 中禁用导航快捷方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!