我正在使用C#.net在WPF应用程序中工作 我想知道,有没有办法在特定的xaml页面上禁用 Backspace 按钮。 我想阻止用户在这个特定的xaml页面上使用 Backspace 按钮。即使用户按下 Backspace 按钮,也不会产生任何效果。
由于
答案 0 :(得分:25)
如果您想阻止退格返回WPF框架中的导航历史记录,包括特殊的“后退”硬件按钮,请使用:
NavigationCommands.BrowseBack.InputGestures.Clear();
NavigationCommands.BrowseForward.InputGestures.Clear();
答案 1 :(得分:6)
您需要捕获onKeyDown事件并将handle设置为true以用于退格。
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back)
{
e.Handled = true;
}
}
答案 2 :(得分:1)
所以我更喜欢approach by sipwiz因为我不想禁用所有键盘快捷键(我仍然想使用ALT-Left等而不是Backspace)。
对于我使用WPF NavigationWindow,覆盖OnKeyDown
方法根本不起作用,当我按下退格键时窗口仍然会导航回来。覆盖OnPreviewKeyDown
似乎确实可以开始,但是当我需要Backspace键来处理文本框时,我遇到了问题。
所以我从approach by Ed Andersen获取了我学到的知识,并将以下代码添加到NavigationWindow构造函数中:
KeyGesture backKeyGesture = null;
foreach(var gesture in NavigationCommands.BrowseBack.InputGestures)
{
KeyGesture keyGesture = gesture as KeyGesture;
if((keyGesture != null) &&
(keyGesture.Key == Key.Back) &&
(keyGesture.Modifiers == ModifierKeys.None))
{
backKeyGesture = keyGesture;
}
}
if (backKeyGesture != null)
{
NavigationCommands.BrowseBack.InputGestures.Remove(backKeyGesture);
}