.net WPF:当按下Alt键时,我的上下文菜单将不会打开
在我的WPF应用程序中,当一个ContextMenu打开时,我想根据是否按下Alt键来调整它的菜单项 我已经有了逻辑。XAML:.net WPF:当按下Alt键时,我的上下文菜单将不会打开,.net,wpf,contextmenu,alt-key,.net,Wpf,Contextmenu,Alt Key,在我的WPF应用程序中,当一个ContextMenu打开时,我想根据是否按下Alt键来调整它的菜单项 我已经有了逻辑。XAML: <my:Control ContextMenuOpening="MyContextMenu_Opening" /> 我的问题是,当按下Alt键时,上下文菜单打开,然后立即关闭。在打开的瞬间,我可以看到我的逻辑至少在工作 我想知道这是否是WPF的“功能”,因为如果我在右键单击文本字段时按住Alt键,同样的情况也会发生——内置的剪切/复制/粘贴菜单会闪烁打开
<my:Control ContextMenuOpening="MyContextMenu_Opening" />
我的问题是,当按下Alt键时,上下文菜单打开,然后立即关闭。在打开的瞬间,我可以看到我的逻辑至少在工作
我想知道这是否是WPF的“功能”,因为如果我在右键单击文本字段时按住Alt键,同样的情况也会发生——内置的剪切/复制/粘贴菜单会闪烁打开,然后立即关闭
一种预感是,它与Alt激活应用程序菜单栏有关。但应用程序菜单栏不适用于我的情况,因此,如果解决方案涉及到这一点,它仍然适用于我。这是MenuBase类中的内置行为:
protected override void OnKeyDown(KeyEventArgs e)
{
.....
if (((e.SystemKey == Key.LeftAlt) || (e.SystemKey == Key.RightAlt)) || (e.SystemKey == Key.F10))
{
this.KeyboardLeaveMenuMode();
e.Handled = true;
}
}
为什么不使用另一个修改键???这是MenuBase类中的内置行为:
protected override void OnKeyDown(KeyEventArgs e)
{
.....
if (((e.SystemKey == Key.LeftAlt) || (e.SystemKey == Key.RightAlt)) || (e.SystemKey == Key.F10))
{
this.KeyboardLeaveMenuMode();
e.Handled = true;
}
}
为什么不使用另一个修改键???这是一种内置行为 从
这是一种内在的行为 从
您仍然可以使用Alt键,只需重写基类行为:
public class AltProofContextMenu : ContextMenu
{
protected override void OnKeyDown(KeyEventArgs e)
{
if(!(e.SystemKey == Key.LeftAlt || e.SystemKey == Key.RightAlt))
base.OnKeyDown(e);
}
}
您仍然可以使用Alt键,只需重写基类行为:
public class AltProofContextMenu : ContextMenu
{
protected override void OnKeyDown(KeyEventArgs e)
{
if(!(e.SystemKey == Key.LeftAlt || e.SystemKey == Key.RightAlt))
base.OnKeyDown(e);
}
}
是的,我想我必须按照你的建议使用另一个修改键。我注意到这种行为发生在“开始”>“运行”对话框的文本字段中的窗口上,例如,因此我认为至少WPF与其他窗口的设计工作方式一致……是的,我想我必须按照您的建议使用另一个修改键。我注意到这种行为发生在“开始”>“运行”对话框的文本字段中的窗口上,例如,因此我认为至少WPF与其他窗口的设计工作方式一致。。。