我有一个menuitem,其中itemsource设置为不同类型的集合。对于每种类型,我在资源部分中定义了一个datatemplate。
如何根据数据类型设置menuItems图标?
编辑:虽然Brian建议的想法可行,但我不希望viewmodel指定图像资源本身,而是要打开View的标签,所以接下来就是这样。
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
<Setter Property="Command" Value="{Binding Process}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Usage}" Value="UsageA">
<Setter Property="Icon" Value="{StaticResource imgA}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Usage}" Value="UsageB">
<Setter Property="Icon" Value="{StaticResource imgB}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Usage}" Value="UsageC">
<Setter Property="Icon" Value="{StaticResource imgC}"/>
</DataTrigger>
</Style.Triggers>
</Style>
答案 0 :(得分:1)
您必须为Style
的{{1}}创建MenuItem
。在样式中,您可以将ItemContainerStyle
的{{1}}绑定到对象上的属性。它看起来像这样:
Icon
您也可以使用水平MenuItem
在<Style x:Key="MyMenuItemStyle" TargetType="MenuItem">
<Setter Property="Header" Value="{Binding MenuName}"/>
<Setter Property="Command" Value="{Binding MenuCommand}"/>
<Setter Property="Icon" Value="{Binding MenuIcon}" />
</Style>
中执行此操作,只显示图片和菜单的文字,但这不会真正使用{{1} } DataTemplate
的属性,只是将图片添加到StackPanel
的{{1}}。
Icon
定义了MenuItem
的容器,并允许您分配Content
的{{1}}属性。