menuItem.InputGestureText不显示快捷方式文本

时间:2015-10-09 15:15:30

标签: c# wpf keyboard-shortcuts menuitem

在我的应用程序中,我在代码中创建菜单项。这是用于创建菜单项

的代码
public MenuItem getMenuItem(string toolTip, string menuTitle, Uri menuIconUri, int? tagOnlyForHeaders, string shortCutKeyText ="")
    {
        MenuItem menuItem = new MenuItem
        {
            ToolTip = toolTip,
            Header = menuTitle
        };
        if (menuIconUri != null)
        {
            menuItem.Icon = new Image
            {
                Source = new BitmapImage(menuIconUri)
            };
        }
        if (tagOnlyForHeaders != null) {
            menuItem.Tag = tagOnlyForHeaders;
        }

        if (shortCutKeyText != "") {
            menuItem.InputGestureText = shortCutKeyText;
        }
        return menuItem;
    }

但如果我为ctrl+n之类的输入Gesture传递值,则在应用程序运行时它不会在菜单项中显示快捷方式文本。这段代码有什么问题。任何人都可以为此解决问题。

这是我添加菜单项的方式

//Top level Op menu
        var opMenuItem = utils.getMenuItem("OP", MenuName, null, 0);

        //op registration
        var RegistrationMenuItem = utils.getMenuItem("New Registration", "New Registration",
            new Uri(baseIconUri + "newRegistration.png"), null,"ctrl+n ");
        opMenuItem.Items.Add(opRegistrationMenuItem);
        return opMenuItem;

并将其添加到主菜单

mainMenu.Items.Add(menuItem); // in this case the "opMenuItem"

2 个答案:

答案 0 :(得分:2)

InputGestureText仅在MenuItem Menu的直接子项时才有效(即不直接位于Items集合内) 。如果您想查看InputGestureText,则需要将MenuItem添加到另一个Items的{​​{1}}集合中。为了说明我所说的,这里是XAML中的一个例子。

MenuItem

<Menu> <MenuItem Header="File" InputGestureText="Ctrl+Z"> <MenuItem InputGestureText="Ctrl+C" Header="Open"></MenuItem> </MenuItem> </Menu> (页眉=&#34;文件)的InputGestureText不可见,但MenuItem(页眉=&#34;打开&#34;)的MenuItem是可见的

答案 1 :(得分:0)

这是我用来设置用户界面样式的库(Material design library)的问题。我已经报告了这个问题并且已修复。