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>

AltCただし、フォントサイズ10を選択するためのショートカット機能が失われていることがわかりました(機能しなくなったのはビットだけFで、最初の2ビットはまだ問題ありません)。00

代わりに、アイテムをすばやく選択する方法として1_0使用できるのではなく、メニュー自体に文字通りのテキストが表示されます。0

ファイル構成ヘルプ
      + ------------- + + ----- +
      | フォントサイズ>|->| _8 |
      | 速度>| | 1_0 |
      + ------------- + | 1_2 |
                       + ----- +

メニューテキストの正しい位置合わせを維持しながら、アクセラレータを使用できるようにするにはどうすればよいですか?

4

1 に答える 1

2

MenuItem(およびButton)にアクセラレータを追加すると、WPFは自動的にTextBlockをMenuItemに追加します。これにより、コードが機能しなくなる可能性があります。この質問への回答を見ると、この効果を確認できます。

このコードは、デフォルトの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> 
于 2010-10-10T15:09:31.530 に答える