MenuItem.Icon仅出现在最后一项上

时间:2018-01-02 09:25:09

标签: wpf xaml menu icons

我在项目上有一个菜单,其中包含以下样式:

<Style TargetType="MenuItem">
    <Setter Property="Template" Value="{StaticResource MenuItem}"/>
    <Setter Property="Icon">
        <Setter.Value>
            <TextBlock FontWeight="Bold">Ic</TextBlock>
        </Setter.Value>
    </Setter>
    <Setter Property="Header" Value="{Binding Name}"/>
    <Setter Property="ItemsSource" Value="{Binding SubItems}"/>
</Style>

NameSubItems是类MenuItem的属性。 菜单的ItemsSource属性绑定到List<MenuItem>

类型的对象

问题是“图标”部分仅出现在菜单的最后一项:

enter image description here

此外,如果我点击展开“播放列表”项目,会发生以下情况: enter image description here

我最终想要将每个Item绑定到它自己的Icon,但这似乎也不起作用。 是什么原因造成了这种不端行为以及如何解决这个问题?

更新我见过这个:MenuItem style with icon creates only one icon 但它对我不起作用,因为a。 x:Shared=false制作了XamlParseException和b。如果我把它移出Style.Resources它没有例外,但根本没有用。请注意,我确实需要INSIDE the Style,因为最终我希望它绑定到我将MenuItem绑定到的类的属性。

1 个答案:

答案 0 :(得分:-1)

不要共享TextBlock

 <TextBlock x:Key="tb"  x:Shared="false" FontWeight="Bold">Ic</TextBlock>


<Style  TargetType="{x:Type MenuItem}">
    ...             
   <Setter Property="Icon" Value="{StaticResource tb}"/>
</Style>