我有下一个makrup:
<Style TargetType="{x:Type MenuItem}">
<Setter Property="MinWidth" Value="65" />
<Setter Property="MinHeight" Value="30" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Border x:Name="MainBorder" BorderThickness="1" Background="Black">
<TextBlock Margin="5" Text="{TemplateBinding Header}" Foreground="{TemplateBinding Foreground}" />
<Popup x:Name="SubMenuPopup" IsOpen="{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Right"
AllowsTransparency="True" Focusable="False">
<Border Background="Gray">
<Grid x:Name="SubMenu" Grid.IsSharedSizeScope="True" Background="Transparent">
<StackPanel Margin="0" IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" Background="Gray" />
</Grid>
</Border>
</Popup>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
当我在某处创建MenuItem并使用&#34; _&#34;设置它的标题属性时符号 - 它不会为此菜单项创建快捷方式。 示例 - 字母&#39; F&#39;没有加下划线,快捷方式也不起作用。
如何在MenuItems中支持ControlTemplates中的快捷方式?
感谢。
答案 0 :(得分:3)
它不是完整的模板,而是TextBlock放置了一个可以识别访问键的ContentPresenter:
<ContentPresenter Margin="5" Content="{TemplateBinding Header}" TextBlock.Foreground="{TemplateBinding Foreground}" RecognizesAccessKey="True" />
我认为你在这里粘贴的xaml只是你实现的一部分,所以我的解决方案是继续使用访问密钥工作的...
您可以找到与此类似的完整模板:http://msdn.microsoft.com/en-us/library/ms747082%28v=vs.85%29.aspx
答案 1 :(得分:0)
如果您希望菜单项字母在keypress下划线,那么您必须在menuitem上设置InputGesture,如下所示:
<MenuItem Header="_File"
InputGestureText="Ctrl+F"
Commmand={Binding NewFileCommand}/>
但是如果你想为menuitem命令创建快捷方式,那么你必须在你的窗口上创建如下所示的命令绑定:
<Window.CommandBindings>
<CommandBinding Command="local:MyCommands.NewFile" Executed="NewFile_Executed" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="F" Modifiers="Control" Command="local:MyCommands.NewFile"/>
</Window.InputBindings>