在Style.Resources中使用x:key设置单个元素子项的样式

时间:2013-10-30 20:47:30

标签: wpf

我来自很多ytml和hss,所以当涉及到样式时,我搜索相同的使用模式。 这次我需要定义一个由单个元素(如css的#id)使用的外部样式,并自动定义使用x:Key-> Style(或css中的.class)区分它们的子元素。 问题是我只能通过元素类型区分,并且相同类型的所有元素都具有相同的样式。我目前发现的唯一解决方案是使用内联样式或创建一个全新的样式定义,但这会降低可读性和长期可管理性。

我需要做这样的工作: 外部风格

<Style TargetType="DockPanel" x:Key="MenuPrincipale">
    <Setter Property="Width" Value="100"/>
    <Style.Resources>
        <Style TargetType="StackPanel" x:Key="some_class">
            <Setter Property="Margin" Value="5,40,5,0"/>
        </Style>
    </Style.Resources>
</Style>

的Xaml

<DockPanel Style="{StaticResource MenuPrincipale}">
    <StackPanel Style="{StaticResource some_class}">
        <Label Foreground="White">this is styled</Label>
    </StackPanel>
    <StackPanel>
        <Label Foreground="White">this is NOT styled</Label>
    </StackPanel>
</DockPanel>

1 个答案:

答案 0 :(得分:0)

我不完全确定你在问什么,但是通过使用basedOn标签来看一下样式的继承。