我正在尝试将InputGesture
绑定到绑定到RoutedCommand
内的MenuItem
的{{1}}。
如下图所示,我正在尝试将ContextMenu
绑定到KeyGesture
MenuItem,其中Language->English/England
为Language
且Button
为{{} 1}}在English/England
按钮的MenuItem
内。
到目前为止,我已经做了以下事情:
- >我的命令
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
),它无效。
任何帮助都会非常感激。提前谢谢。