【问题标题】:Style from Resource not applying in menuitem来自资源的样式不适用于菜单项
【发布时间】:2014-09-21 07:31:31
【问题描述】:

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

通用 XAML 代码 sn-p

<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中我使用了多个菜单项

【问题讨论】:

    标签: wpf xaml styles basedon


    【解决方案1】:

    这里有两种选择

    从样式中移除键

    例如

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

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

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


    或将样式直接应用到菜单项,保留样式中的键

    例如

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

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


    这种风格没有任何用途

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多