0

我有一个菜单项,其 itemsource 设置为不同类型的集合。对于每种类型,我在资源部分定义了一个数据模板。

如何根据数据类型设置 menuItems 图标?

编辑:虽然布赖恩提出的想法会奏效,但我不希望视图模型指定图像资源本身,而是指定视图打开的标签,因此进行了以下操作。

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

1 回答 1

1

您必须StyleMenuItem. ItemContainerStyle在样式中,您可以将Iconfor绑定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>

您也可以DataTemplate通过使用 Horizo​​ntalStackPanel并仅显示菜单的图像和文本来执行此操作,但这不会真正利用 的Icon属性MenuItem,而只是将图像添加ContentMenuItem.

定义的ItemContainerStyle容器MenuItem,并允许您分配 的Icon属性MenuItem

于 2013-08-04T01:22:33.197 回答