web-dev-qa-db-ja.com

画像付きのWPFメニュー項目

MenuItem.Iconを定義して、MenuItemHeaderテキストがメニュー項目画像の下に配置されるようにするにはどうすればよいですか?

51
Vytas

簡単な方法は、Iconプロパティを使用せず、代わりにヘッダーにアイコンを配置することです。

<Menu>
  <MenuItem>
    <MenuItem.Header>
      <StackPanel>
        <Image Width="20" Height="20" Source="/XSoftArt.WPFengine;component/Images/export32x32xp.png" />
        <ContentPresenter Content="Reports" />
      </StackPanel>
    </MenuItem.Header>
  </MenuItem>
  <MenuItem Header="Export" />
  <MenuItem Header="New record" />
</Menu>

この単純なケースでは、<ContentPresenter Content="Reports" /><TextBlock Text="Reports" />に置き換えることができます。これは、とにかく文字列を表示するためにContentPresenterが使用するものだからです。より複雑なHeader=の場合、示されているようにContentPresenterを使用できます。

49
Ray Burns

どのように何かに沿って:

<ContextMenu>
    <MenuItem Header="Reports">
        <MenuItem.Icon>
            <Image Source="/XSoftArt.WPFengine;component/Images/export32x32xp.png"/>
        </MenuItem.Icon>
    </MenuItem>
</ContextMenu>
144
DanielE

StackPanelの場合は、TextBlockではなくLabelを使用してくださいLabelを使用すると、_ Reportsのようにメニューにニーモニックを表示できます。

3
tridy