无法从后面的代码设置InputGestureText

时间:2016-11-08 18:25:55

标签: c# wpf

我无法从后面的代码中设置InputGestureText。 快捷键工作正常但键字符串不会与菜单项一起显示。

下面提到了XAML和C#代码。

环境: VS2012& .NET Framework 4.5

知道我缺少什么吗?

//********************
//XAML
//********************
        <DockPanel Grid.Row="0" Grid.ColumnSpan="2">
            <Menu DockPanel.Dock="Top" Background="White">
                <MenuItem x:Name="mnuFile" Header="_File">
                    <MenuItem x:Name="mnuFileNew" Header="_New..." />
                    <MenuItem x:Name="mnuFileOpen" Header="_Open for Editing..." />
                    <Separator />
                    <MenuItem x:Name="mnuFileExit" Header="E_xit" />
                </MenuItem>
            </Menu>
        </DockPanel>
//********************


//********************
//Code Behind
//********************

public MainWindow()
{
    InitializeComponent();

    //File > New
    mnuFileNew.Click += mnuFileNew_Click;
    RoutedCommand cmdNewReport = new RoutedCommand();
    cmdNewReport.InputGestures.Add(new KeyGesture(Key.N, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+N"));
    CommandBindings.Add(new CommandBinding(cmdNewReport, mnuFileNew_Click));
}

void mnuFileNew_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("New Report not implemented!", this.Title, MessageBoxButton.OK, MessageBoxImage.Information);
}
//********************

1 个答案:

答案 0 :(得分:0)

如果您想使用后面的代码,请尝试使用此代码来显示快捷方式:

mnuFileNew.Click += mnuFileNew_Click;
RoutedCommand cmdNewReport = new RoutedCommand();

var keyGesture = new KeyGesture(Key.N, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+N");
cmdNewReport.InputGestures.Add(keyGesture);
mnuFileNew.InputGestureText = keyGesture.DisplayString;

CommandBindings.Add(new CommandBinding(cmdNewReport, mnuFileNew_Click));
相关问题