我希望有人可以帮助我。我有一个WPF UserControl,我将PreviewKeyUp绑定到一个事件,该事件处理Alt+Char
组合上发生的事情。这完全符合我的要求。
后来我了解到,按照惯例,单击Alt
时,控件标签中快捷方式的字母应加下划线。例如,标签的快捷方式为ALT+L
,然后点击Alt
时,标签中的l应加下划线。
然后我在快捷方式的字母前添加了_
,例如_label
。问题是它似乎与捷径的原生行为以及我希望它在我的绑定中定义的行为相冲突。因此,例如在按钮的情况下,它只关注控件在我处理事件的位置,我点击按钮。
长话短说,我想保留我的previewKeyUp事件的实现,但也有下划线的快捷方式字母。有没有办法禁用原生行为?
这是一个正在做的事情的例子:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
PreviewKeyUp="PreviewKeyUp">
[...]
</UserControl>
在PreviewKeyUp中:
if (e.Key == Key.System)
{
switch (e.SystemKey)
{
case Key.I:
this.btn.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
break;
//More Switch Cases to be added
}
}
现在这完全符合我的要求,但按钮中的字母没有按照惯例加下划线。
所以我所做的就是在Xaml中的按钮标签中添加_
<Button x:Name="btn" Click="Btn_Click" >_Ibutton</Button>
现在短键的行为是它专注于按钮,但不会点击它。如果我完全删除“PreviewKeyUp”事件,这种行为完全相同。