在CSS中,可以根据HTML元素在元素树中的位置设置样式:
div#container div#menu a
我想在WPF中执行相同操作,以便只对菜单部分中的链接进行样式设置。
我正在考虑嵌套在StatusBar中的Separators的以下内容:
<Style TargetType="{x:Type StatusBar}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Padding" Value="0,0,20,0" />
<Style.Resources>
<Style TargetType="{x:Type Separator}">
<Setter Property="Width" Value="20" />
<Setter Property="Background" Value="Green" />
</Style>
</Style.Resources>
</Style>
这段XAML包含在资源字典中。 StatusBar显示透明背景和正确的填充。但是,遗憾的是绿色分隔符不显示。它只显示默认的灰色1px宽条。
提前致谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
自己偶然发现了一个答案。我提到的代码对于每种情况都是正确的,除了分隔符。 Separator元素应使用特定键设置样式,详细说明如下:http://devlicio.us/blogs/christopher_bennage/archive/2008/06/19/styling-separators-in-wpf.aspx。
答案 2 :(得分:0)
我在一段时间后写了一篇博客文章,我带了一个CSS选择器引擎(Fizzler)并将其应用到WPF:
http://www.scottlogic.co.uk/blog/colin/2009/03/using-css-selectors-for-styling-in-wpf/
它允许您使用CSS选择器来定位元素并将样式应用于它们。它还合并样式,以便在多个CSS选择器匹配时,将每个样式的样式合并在一起。
请参阅以下示例:
<css:StyleSheet x:Key="cssStyles">
<css:StyleSheet.Rules>
<css:StyleRule Selector=".form Grid *" SelectorType="LogicalTree">
<css:StyleRule.DeclarationBlock>
<css:StyleDeclarationBlock>
<css:StyleDeclaration Property="Margin" Value="4,4,4,4"/>
</css:StyleDeclarationBlock>
</css:StyleRule.DeclarationBlock>
</css:StyleRule>
<css:StyleRule Selector=".form TextBlock.mandatory">
<css:StyleRule.DeclarationBlock>
<css:StyleDeclarationBlock>
<css:StyleDeclaration Property="Foreground" Value="Red"/>
</css:StyleDeclarationBlock>
</css:StyleRule.DeclarationBlock>
</css:StyleRule>
<css:StyleRule Selector="Border.form">
<css:StyleRule.DeclarationBlock>
<css:StyleDeclarationBlock>
<css:StyleDeclaration Property="BorderThickness" Value="2"/>
<css:StyleDeclaration Property="BorderBrush" Value="Black"/>
<css:StyleDeclaration Property="CornerRadius" Value="5"/>
<css:StyleDeclaration Property="Margin" Value="10,10,10,10"/>
</css:StyleDeclarationBlock>
</css:StyleRule.DeclarationBlock>
</css:StyleRule>
<css:StyleRule Selector=".form .title">
<css:StyleRule.DeclarationBlock>
<css:StyleDeclarationBlock>
<css:StyleDeclaration Property="HorizontalAlignment" Value="Stretch"/>
<css:StyleDeclaration Property="HorizontalContentAlignment" Value="Center"/>
<css:StyleDeclaration Property="Background" Value="DarkBlue"/>
<css:StyleDeclaration Property="Foreground" Value="White"/>
<css:StyleDeclaration Property="FontSize" Value="13"/>
<css:StyleDeclaration Property="Padding" Value="3,3,3,3"/>
<css:StyleDeclaration Property="FontWeight" Value="Bold"/>
</css:StyleDeclarationBlock>
</css:StyleRule.DeclarationBlock>
</css:StyleRule>
</css:StyleSheet.Rules>
</css:StyleSheet>