在WPF中,如何在保留键盘快捷键的情况下右对齐菜单项?

3

最近我修改了XAML以获得将菜单项(如下图所示的设置字体大小)右对齐的功能:

文件  配置  帮助
      +-------------+  +----+
      | 字体大小 > |->|  8 |
      | 速度     > |  | 10 |
      +-------------+  | 12 |
                       +----+

显然,根据该图形,我不会很快从技术角色转向平面设计 :-) 它更多地是为了说明我的意思。

原始的XAML未对值进行右对齐:

<MenuItem Header="_Configure">
    <MenuItem Header="_Font size   ">
        <MenuItem Header="_8" Click="menuConfigFontSz8" />
        <MenuItem Header="1_0" Click="menuConfigFontSz10" />
        <MenuItem Header="1_2" Click="menuConfigFontSz12" />
    </MenuItem>
    :
</MenuItem>

相反,它给了我:

文件  配置  帮助
      +-------------+  +----+
      | 字体大小 > |->| 8  |
      | 速度     > |  | 10 |
      +-------------+  | 12 |
                       +----+

因此,为了获得右对齐,我将其更改为:

<MenuItem Header="_Configure">
    <MenuItem Header="_Font size   ">
        <MenuItem Click="menuConfigFontSz8">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">_8</TextBlock>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Click="menuConfigFontSz10">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">1_0</TextBlock>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Click="menuConfigFontSz12">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">1_2</TextBlock>
            </MenuItem.Header>
        </MenuItem>
    </MenuItem>
    :
</MenuItem>

然而,我发现我失去了使用 AltCF0 快捷键选择字体大小 10 的能力(只有 0 部分不再起作用,前两部分仍然正常)。
相反,它在菜单中直接给出文字 1_0,而不允许我使用 0 作为快速选择项目的方式:
文件  配置  帮助
      +-------------+  +-----+
      | 字体大小 > |->|  _8 |
      | 速度     > |  | 1_0 |
      +-------------+  | 1_2 |
                       +-----+
如何保持菜单文本的正确对齐方式,同时仍允许加速键?
1个回答

2
当您为 MenuItem(和 Button)添加加速器时,WPF 会自动向 MenuItem 添加 TextBlock,这可能会导致您的代码无法正常工作。如果您查看此问题的 questionanswer,您可以看到这种效果。
如果您没有通用的 TextBlock 样式覆盖默认的 TextBlock 行为,则此代码可以解决该问题。
<MenuItem Header="_Configure"> 
  <MenuItem Header="_Font size"> 
    <MenuItem Click="menuConfigFontSz8" Header="_8" HorizontalAlignment="Right"/>
    <MenuItem Click="menuConfigFontSz10" Header="1_0" HorizontalAlignment="Right"/>
    <MenuItem Click="menuConfigFontSz12" Header="1_2" HorizontalAlignment="Right"/>
</MenuItem> 

完美运行(而且使XAML变得更加简洁)。干杯。 - paxdiablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接