我的窗口的DataContext是一个IDictionary>。
有没有人能给我解释一下为什么这样做很好:
<Style x:Key="MenuItemStyle">
<Setter Property="MenuItem.Header" Value="{Binding Ticker}"/>
</Style>
<Style x:Key="ContextMenuStyle">
<Setter Property="MenuItem.Header" Value="{Binding Key}"/>
<Setter Property="MenuItem.ItemsSource" Value="{Binding Value}"/>
<Setter Property="MenuItem.ItemContainerStyle" Value="{StaticResource MenuItemStyle}"/>
</Style>
<ContextMenu ItemContainerStyle="{StaticResource ContextMenuStyle}" ItemsSource="{Binding Quotes}" />但这不是:
<Style TargetType="{x:Type ContextMenu}" x:Key="ContextMenuStyle">
<Setter Property="MenuItem.Header" Value="{Binding Key}"/>
<Setter Property="MenuItem.ItemsSource" Value="{Binding Value}"/>
<Setter Property="MenuItem.ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Header" Value="{Binding Ticker}"/>
</Style>
</Setter.Value>
</Setter>
</Style>
<ContextMenu ItemContainerStyle="{StaticResource ContextMenuStyle}" ItemsSource="{Binding Quotes}" />编辑:如果我删除T‘’argetType=“{x:Type ContextMenu}"',它可以正常工作。然而,我并不清楚为什么。
谢谢
发布于 2012-05-22 09:54:04
您需要将TargetType的值从ContextMenu更改为MenuItem。ContextMenu的ItemContainerStyle属性将样式设置为ContextMenu的容器元素,在本例中为MenuItem。但是,您将样式的目标类型设置为ContextMenu,因此它不能工作。有关更多详细信息,请参阅this link。
https://stackoverflow.com/questions/10694375
复制相似问题