我想設置我的菜單項的圖標這樣的菜單項 -無法設置圖標使用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>
,但將只顯示最後一個菜單項的圖標,而不是爲第2位。
應用示例 - http://weblogs.asp.net/blogs/akjoshi/Samples/WPFMenuItemBugSample.zip
任何人都可以提供這種行爲和可能的解決方案/解決方法的原因。
感謝肯特,但不幸的是這兩個解決方案不起作用。沒有第一個和第二個產生以下異常的影響: - 不能將'System.Windows.Controls.Image'類型的內容添加到'System.Object'類型的對象。標記文件'Sample; component/window1.xaml'中的對象'System.Windows.Controls.Image'出錯27行34. – akjoshi
如果有幫助,我已經上傳了在問題中重現此問題的示例應用程序; – akjoshi
@akjoshi:謝謝你的回覆。將您的項目切換到WPF 4允許我的第一個建議工作,所以必須在3.5中有一個錯誤。至於我的第二個建議,這不會工作,因爲WPF試圖在所有MenuItems中使用相同的圖像,就像我在我的答案中描述的那樣。如果有一個'IconTemplate'屬性,你會使用它。不幸的是,'MenuItem'沒有足夠精細的一個,所以我只能建議覆蓋'Template'。沮喪地說至少。 –