将KeyGesture绑定到ContextMenu中的MenuItem

时间:2014-03-22 07:36:49

标签: c# wpf menu contextmenu commandbinding

我正在尝试将InputGesture绑定到绑定到RoutedCommand内的MenuItem的{​​{1}}。

如下图所示,我正在尝试将ContextMenu绑定到KeyGesture MenuItem,其中Language->English/EnglandLanguageButton为{{} 1}}在English/England按钮的MenuItem内。

temp

到目前为止,我已经做了以下事情:

- >我的命令

ContextMenu

在XAML模板中,我有以下

Language

我将输入手势添加到此命令中:

public static RoutedCommand SetCultureENCommand = new RoutedCommand("SetCultureENCommand", typeof(ContextMenu));

最后,我将其注册为:

<Button x:Name="btnCulture" Grid.Column="2" Grid.Row="0">
<!-- other stuff here -->
<Button.Style>
    <Style TargetType="{x:Type Button}">
        <Style.Triggers>
            <EventTrigger RoutedEvent="Click">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
                                <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True" />
                            </BooleanAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Style.Triggers>
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    <MenuItem Header="German/Germany" Command="{x:Static DesignerItems:DesignerCanvas.SetCultureDECommand}" Style="{StaticResource MenuItemStyle}">
                        <MenuItem.Icon>
                            <Image Source="/myImageDir/de.png" Width="20"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="English/England" Command="{x:Static DesignerItems:DesignerCanvas.SetCultureENCommand}" Style="{StaticResource MenuItemStyle}">
                        <MenuItem.Icon>
                            <Image Source="/myImageDir/gb.png" Width="20"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </ContextMenu>
            </Setter.Value>
        </Setter>
    </Style>
</Button.Style>

我尝试完成this question这样的操作,但是当我明确点击DesignerCanvas.SetCultureENCommand.InputGestures.Add(new KeyGesture(Key.F11, ModifierKeys.None)); 然后按CommandManager.RegisterClassCommandBinding(typeof(ContextMenu), new CommandBinding(DesignerCanvas.SetCultureENCommand, SetCultureToEN)); 时,似乎<{1}}仅正常工作手势(即明确打开KeyGesture后)。当我通过Language本身按下手势时(即没有明确打开ContextMenu),它无效。

任何帮助都会非常感激。提前谢谢。

0 个答案:

没有答案