我在项目上有一个菜单,其中包含以下样式:
<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>
(Name
和SubItems
是类MenuItem
的属性。
菜单的ItemsSource
属性绑定到List<MenuItem>
)
问题是“图标”部分仅出现在菜单的最后一项:
我最终想要将每个Item绑定到它自己的Icon,但这似乎也不起作用。 是什么原因造成了这种不端行为以及如何解决这个问题?
更新我见过这个:MenuItem style with icon creates only one icon
但它对我不起作用,因为a。 x:Shared=false
制作了XamlParseException
和b。如果我把它移出Style.Resources
它没有例外,但根本没有用。请注意,我确实需要INSIDE the Style,因为最终我希望它绑定到我将MenuItem绑定到的类的属性。
答案 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>