Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF上下文菜单样式结构_Wpf_Styles_Contextmenu_Menuitem - Fatal编程技术网

WPF上下文菜单样式结构

WPF上下文菜单样式结构,wpf,styles,contextmenu,menuitem,Wpf,Styles,Contextmenu,Menuitem,我想重新设计上下文菜单,但我有一个关于如何构造Xaml的问题 在我的应用程序资源中,我有如下内容: <ControlTemplate TargetType="MenuItem" x:Key="MenuItemTemplate"> ... </ControlTemplate> <ControlTemplate TargetType="ContextMenu" x:Key="ContextMenuTemplate"> <ControlTem

我想重新设计
上下文菜单
,但我有一个关于如何构造Xaml的问题

在我的应用程序资源中,我有如下内容:

<ControlTemplate TargetType="MenuItem" x:Key="MenuItemTemplate">
    ...
</ControlTemplate>

<ControlTemplate TargetType="ContextMenu" x:Key="ContextMenuTemplate">
    <ControlTemplate.Resources>
        <Style TargetType="{x:Type MenuItem}">
            <Setter Property="Template" Value="{StaticResource MenuItemTemplate}" />
        </Style>
    </ControlTemplate.Resources>

    ...    

</ControlTemplate>

<Style TargetType="{x:Type ContextMenu}" x:Key="RadialContextMenu">
    <Setter Property="Template" Value="{StaticResource ContextMenuTemplate}" />
</Style>
但是,我不喜欢有
ControlTemplate.Resources
部分。例如,我更愿意将它放在
x:Key=“RadialContextMenu”
样式中,这样两个控件模板都是“干净的”

如何将样式元素移出第二个
ControlTemplate

尝试以下操作:

<Style TargetType="{x:Type ContextMenu}" x:Key="RadialContextMenu">
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Template" Value="{StaticResource MenuItemTemplate}" />
            </Style>
        </Setter.Value>
    </Setter>
</Style>

<Style TargetType="{x:Type ContextMenu}" x:Key="RadialContextMenu">
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Template" Value="{StaticResource MenuItemTemplate}" />
            </Style>
        </Setter.Value>
    </Setter>
</Style>