C# WPF/Xaml上下文菜单项ContainerStyle行为
我的窗口的DataContext是IDictionary> 有谁能向我解释一下为什么这样做很好:C# WPF/Xaml上下文菜单项ContainerStyle行为,c#,wpf,xaml,C#,Wpf,Xaml,我的窗口的DataContext是IDictionary> 有谁能向我解释一下为什么这样做很好: <Style x:Key="MenuItemStyle"> <Setter Property="MenuItem.Header" Value="{Binding Ticker}"/> </Style> <Style x:Key="ContextMenuStyle"> <Setter Property="MenuItem.Heade
<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}”,它可以正常工作。然而,我不清楚为什么
谢谢您需要将
TargetType
的值从ContextMenu
更改为MenuItem
。ContextMenu
的ItemContainerStyle
属性将样式设置为ContextMenu
的容器元素,在本例中为MenuItem
。但是,将样式的目标类型设置为ContextMenu
,使其无法工作。有关更多详细信息,请参阅