【问题标题】:In WPF, how do I right justify menu items while keeping keyboard shortcuts?在 WPF 中,如何在保留键盘快捷键的同时右对齐菜单项?
【发布时间】:2011-04-23 09:27:28
【问题描述】:

我最近更改了我的 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 | +-----+

如何保持菜单文本的正确对齐但仍允许使用加速键?

【问题讨论】:

    标签: c# wpf keyboard-shortcuts menuitem justify


    【解决方案1】:

    当您向 MenuItem(和 Button)添加加速器时,WPF 会自动将 TextBlock 添加到您的 MenuItem,这可能会阻止您的代码工作。看看answer到这个question就可以看到这个效果了。

    如果您的资源中没有覆盖默认 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 看起来不那么冗长)。干杯。
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2014-03-25
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多