WPF学习笔记--样式

熟悉网页制作的朋友都知道,样式表是制作网页非常好用的修饰方法。在WPF里,也可以使用样式。

<Window.Resources>
<SolidColorBrush x:Key="myBrush" Color="Red" />
<Style x:Key="CalcButtonStyle" TargetType="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="BorderBrush" Value="{DynamicResource myBrush}"/>
</Style>
</Window.Resources>

这里定义了一个样式,使得窗体中所有的按钮,其属性值使用样式中的属性。

TargetType指明样式所使用的类型。如果没有给TargetType赋值,则在Setter定义时,需要提供更多信息:

<Setter Property="Button.Margin" Value="5"/>

如果希望样式的使用范围更广,也可以这样定义:

<Setter Property="Control.Margin" Value="5"/>

在定义样式时,也可以定义不是应用到所有对象的属性:

<Style x:Key="ButtonOrTextBox" TargetType="Control">
<Setter Property="Margin" Value="5"/>
<Setter Property="BorderBrush" Value="{DynamicResource myBrush}"/>
<Setter Property="TextBox.MaxLength" Value="100"/>
</Style>

其中MaxLength属性,在Button中是不存在的,因此当此样式应用到按钮上,MaxLength不起作用。

定义了Style之后,使用的方法如下:

<Button Grid.Column="0" Grid.Row="3"
Style="{StaticResource CalcButtonStyle}"
Name="button4" Click="OnClickDigit">4</Button>

即为对象的Style赋值。

也可以在Style中定义事件对应的方法。

<Style x:Key="CalcButtonStyle" TargetType="Button">
<Setter Property=" Margin" Value="10"/>
<Setter Property="BorderBrush" Value="{DynamicResource myBrush}"/>
<EventSetter Event="Click" Handler="OnButtonClicked"/>
</Style>

使用BasedOn,可以在其它样式的基础上,定义样式。

<Window.Resources>
<SolidColorBrush x:Key="myBrush" Color="Red" />
<Style x:Key="CalcButtonStyle" TargetType="Button">
<Setter Property="FrameworkElement.Margin" Value="10"/>
<Setter Property="BorderBrush" Value="{DynamicResource myBrush}"/>
</Style>
<Style x:Key="DigitButtonStyle"
BasedOn="{StaticResource CalcButtonStyle}"
TargetType="Button">
</Style>
<Style x:Key="OperatorButtonStyle"
BasedOn="{StaticResource CalcButtonStyle}"
TargetType="Button">
<Setter Property="BorderBrush" Value="Green"/>
<Setter Property="FontWeight" Value="UltraBold"/>
</Style>
</Window.Resources>

在代码中,使用样式和使用资源的方法是一样的。

button1.Style =
(Style)FindResource("DigitButtonStyle"
);

如果没有给Style定义Key,则默认使用于所有TargetType类型的。

我们也可以这样,寻找没有定义Key的属性:

<Button Style="{StaticResource {x:Type Button}}" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值