WPF样式分类

本文介绍了WPF中样式的三种类型:属性样式、内联样式和引用样式。属性样式适用于复用度不高的属性设置,内联样式通过XAML的Style属性定义,而引用样式存储在资源字典中,可重复使用。样式优先级为:属性样式 > 引用样式(页面级 > 应用程序级) > 内联样式。同时讨论了内联样式和属性样式冲突时的处理,以及页面级和应用程序级引用样式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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、作用范围不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值