Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WPF:当按下Alt键时,我的上下文菜单将不会打开_.net_Wpf_Contextmenu_Alt Key - Fatal编程技术网

.net WPF:当按下Alt键时,我的上下文菜单将不会打开

.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键,同样的情况也会发生——内置的剪切/复制/粘贴菜单会闪烁打开

在我的WPF应用程序中,当一个ContextMenu打开时,我想根据是否按下Alt键来调整它的菜单项

我已经有了逻辑。XAML:

<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与其他窗口的设计工作方式一致。。。