我来自很多年的 html 和 css,所以在样式方面我搜索相同的使用模式。这次我需要定义一个由单个元素使用的外部样式(如 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>