Próbuję ustawić Ikona mojego menu tak -Nie można ustawić ikonę menu używając ItemContainerStyle
<Grid>
<Grid.Resources>
<Image
x:Key="ReportIconImage" Height="20" Width="20"
Source="/Resource/flag.png"/>
<Image
x:Key="ReportIconImage1" Height="20" Width="20"
Source="/Resource/flag.png"/>
</Grid.Resources>
<Menu Height="22" Margin="0,9,0,0" Name="menu1" VerticalAlignment="Top">
<MenuItem Header="Menu">
<MenuItem Header="Save" ></MenuItem>
<MenuItem Header="Open"/>
<MenuItem Header="Exit"/>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter
Property="Icon"
Value="{StaticResource ReportIconImage}">
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Undo"/>
<MenuItem Header="Redo"/>
<Separator/>
<MenuItem Header="Cut"/>
<MenuItem Header="Copy"/>
<MenuItem Header="Paste"/>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter
Property="Icon"
Value="{StaticResource ReportIconImage1}">
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
</Grid>
ale ikona jest wyświetlana tylko dla ostatniej pozycji menu, a nie do dwóch pierwszych.
Przykładowa aplikacja - http://weblogs.asp.net/blogs/akjoshi/Samples/WPFMenuItemBugSample.zip
Może ktoś podać przyczynę tego problemu i możliwych rozwiązań/obejścia.
Thanks Kent, ale niestety oba rozwiązania nie działa. Nie ma wpływu pierwszego, a drugi generuje następujący wyjątek: - Nie można dodać zawartości typu "System.Windows.Controls.Image" do obiektu typu "System.Object". Błąd w obiekcie "System.Windows.Controls.Image" w pliku znaczników "Próbka; komponent/okno1.xaml" Wiersz 27 Pozycja 34. – akjoshi
Jeśli to pomaga, załadowałem przykładową aplikację odtwarzającą ten problem w pytaniu; – akjoshi
@akjoshi: dzięki za repro. Przełączenie projektu na WPF 4 pozwala mojej pierwszej sugestii działać, więc w wersji 3.5 musi występować błąd. Co do mojej drugiej sugestii, to nie zadziała, ponieważ WPF próbuje użyć tego samego Obrazu we wszystkich MenuItems, w sposób opisany w mojej odpowiedzi. Jeśli istniała własność 'IconTemplate', używałbyś tego. Niestety, 'MenuItem' nie jest wystarczająco drobnoziarnista, aby je mieć, więc mogę tylko zasugerować zastąpienie' Szablonu' zamiast tego. Co najmniej frustrujące. –