web-dev-qa-db-fra.com

Élément de menu WPF avec image

Comment définir MenuItem.Icon pour que le texte MenuItemHeader soit placé sous l'image de l'élément de menu? Merci de votre aide!

51
Vytas

Le moyen le plus simple est de ne pas utiliser la propriété Icon mais de placer l'icône à la place dans l'en-tête:

<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>

Pour ce cas simple, le <ContentPresenter Content="Reports" /> peut être remplacé par un <TextBlock Text="Reports" /> car c'est ce que ContentPresenter utiliserait de toute façon pour présenter la chaîne. Pour plus de complexité Header=, vous pouvez utiliser le ContentPresenter comme indiqué.

49
Ray Burns

Comment quelque chose dans le sens de:

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

Dans le cas de StackPanel utilisez Label et non pas TextBlock puisque seul Label vous permettra d'avoir les mnémoniques dans le menu, comme _Reports.

3
tridy