2009-11-19 31 views

Odpowiedz

45

Prosty sposób sposobem jest nie używać właściwości Ikona ale zamiast umieścić ikonę w nagłówku:

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

Na tym prostym przypadku <ContentPresenter Content="Reports" /> może być zastąpiony <TextBlock Text="Reports" /> bo to właśnie ContentPresenter użyłby mimo to przedstawić ciąg. Aby uzyskać bardziej złożony kod Header=, można użyć ContentPresenter, jak pokazano.

+0

Bardzo dobra odpowiedź, przykład działa przyjemnie ;-). – Vytas

+13

Poniższa odpowiedź jest łatwiejsza i korzysta z właściwości Ikona? –

+4

@ AlexHopeO'Connor Poniższa odpowiedź jest również błędna, jeśli przeczytasz pytanie OP zadawane w tekście, a nie tytuł. Dodatkowo mogłeś zauważyć, że poniższa odpowiedź nie różni się od kodu samego OP. Jasno zapytał, jak wyświetlić tekst pod obrazem, a nie obok niego, PONIŻEJ. Dlatego ta odpowiedź ustawia panel sterujący wewnątrz nagłówka z domyślną orientacją pionową. –

99

Jak coś wzdłuż linii:

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

To powinna być akceptowana odpowiedź. – Boy

+0

To jest poprawna odpowiedź, dzięki! Rozwiązanie dostarczone przez Ray'a Burnsa rysuje obraz w niewłaściwej pozycji. – Mar

+0

Zgadzam się. :) Dobra robota. –

2

W przypadku StackPanel stosowania etykiet i nie TextBlock ponieważ tylko Label pozwoli Ci mieć mnemoniki w menu, jak _Reports.