来自资源的样式不适用于menuitem

时间:2014-09-21 07:31:32

标签: wpf xaml styles basedon

我创建了自定义控件,并且在该样式中菜单项不起作用我使用了BasedOn键来应用样式

通用XAML代码段

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication3">

    <Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}">
        <Setter Property="Height" Value="60"/>
        <Setter Property="Background" Value="Red"/>
    </Style>

    <Style BasedOn="{StaticResource ResourceKey=MenuItemStyle}"  TargetType="{x:Type MenuItem}"/>
    <Style TargetType="{x:Type local:CustomControl1}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                    <Grid x:Name="MainGrid">
                        <Menu>
                            <MenuItem Header="File" />
                        </Menu>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

该样式不适用于MenuItem,而添加样式如下代码正在工作,如何使用基于此实现此功能,因为在我的scnorio中我使用了多个menuitems

1 个答案:

答案 0 :(得分:0)

你有两个选择

从样式中删除密钥

例如

<Style TargetType="{x:Type MenuItem}">
    <Setter Property="Height" Value="60"/>
    <Setter Property="Background" Value="Red"/>
</Style>

这会将此样式应用于范围内的所有菜单项。

注意:如果您发现它不适合您,请尝试在菜单资源中定义样式。


或直接将样式应用于菜单项,将样式保留为样式

例如

<MenuItem Header="File" Style="{StaticResource MenuItemStyle}"/>

这会将样式仅应用于所需的菜单项


这种风格没有任何用途

<Style BasedOn="{StaticResource ResourceKey=MenuItemStyle}"  TargetType="{x:Type MenuItem}"/>