在wpf样式中分为三类样式:
1、 属性样式:直接通过UI元素的属性设置样式
2、 内联样式:通过在UI元素中嵌入Style节点来设置样式
3、 引用样式:定义在资源字典中的样式
样式优先级:
属性样式>引用样式(页面级>应用程序级)>内联样式
属性样式:类似于在HTML元素属性设置的样式
适用于复用度不高的一些属性
内联样式:内联样式和模板的限制
在可扩展应用程序标记语言(XAML),样式和模板属性在技术上可以通过一下两种方式之一进行设置,可以使用特性语法(属性语法)来引用资源中定义的样式,例如:例如 < 对
象 Style="{StaticResource myResourceKey }" …/>。或者可以使用属性元素语法来定义内联样式
特性语法更常见,在资源中咦内联样式定义且未在资源中定义的样式必须仅限于包含元素,因为它没有资源键,所以不能轻易的重新使用。通常,资源定义的样式更通用并且有用,更多的是将Windows Presentation Foundation(Wpf)程序逻辑与代码中的程序逻辑分离在标记中的常规编程模型原则
通常,即使只是要在该位置使用该样式或模板,也没有理由设置样式或模板,大多数可以采用样式或模板的元素也支持content属性和内容模型,如果只适用通过样式设置或模板化一次创建的任何逻辑树,只需在直接标记中使用等效的子元素填充该元素内容属性即可。这回完全跳过样式和模板机制
对于样式和模板,也可以通过返回对象的标记扩展启用其他方法。可能的两种扩展插件都包括TemplateBinding和Binding
内联样式:实际上是设置元素的Style属性
若内联样式与属性样式对同一属性进行设置,艺术型设置的样式为准
引用样式:资源字典可在多出定义,因此引用样式也可以再多出定义
引用样式分为:页面样式和应用程序样式
<Window x:Class="备课项目.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources> 8 <!--操作控件:下拉框ComboBox-->
<!-- ComboBoxItem样式 -->
<Style TargetType="ComboBoxItem">
<Setter Property="VerticalContentAlignment"
Value="Center"/>
<Setter Property="Height" Value="40"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Border Name="Back" Background="Transparent"
BorderThickness="0,0,0,0" BorderBrush="#FF6A6A6A" >
<ContentPresenter ContentSource="{Binding
Source}" Margin="{TemplateBinding Padding}" Height="30" Width="100"
HorizontalAlignment="Left" VerticalAlignment="Center">
<Trigger Property="IsHighlighted"
Value="True">
<Setter TargetName="Back"
Property="Background" Value="Pink"></Setter>
</Trigger>
<Trigger Property="IsSelected"
Value="True">
<Setter TargetName="Back"
Property="Background" Value="#FFCBE3FE"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<ComboBox Width="200" Height="30">
<ComboBoxItem Content="请选择"/>
<ComboBoxItem Content="请选择"/>
<ComboBoxItem Content="请选择"/>
<ComboBoxItem Content="请选择"/>
</ComboBox>
</Grid>
</Window>
页面级样式(写在页面上):
页面样式定义在页面的资源字典中,作用范围整个页面
应用程序样式(写在app.xaml里面)
与页面样式的定义方式和应用方式相同,区别有两个方面:
1、定义位置不同
2、作用范围不同