WPF学习笔记--控件模板

WPF只是定义了控件的作用,并没有定义控件的外观。我们可以使用控件模板来定义控件的外观。

Template是控件的一个属性,因此可以定义到样式中。

<Style x:Key="CalcButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Ellipse Fill="LightGreen" />
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Control.Margin" Value="10"/>
</Style>

这里定义的控件模板有其先天不足:没有显示按钮上的内容。需要添加ContentPresenter。

<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="LightGreen"/>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>

模板绑定

虽然样式很好的定义了一类控件,但是其定义的属性值都是在定义样式时固定死了的。如何能使控件指定自己独立的属性值呢?

我们需要使用模板绑定。

<Ellipse Fill="LightGreen" Stroke="{TemplateBinding Control.BorderBrush}"/>

这样就是把模板中的某一属性值绑定到了控件的某一属性上。

 

触发器

使用触发器,当触发条件满足时,触发器中的值和数据才会有效,如:

<Style x:Key="CalcButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse x:Name="theEllipse" Fill="LightGreen"
Stroke="{TemplateBinding Control.BorderBrush}"/>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsPressed" Value="True" >
<Setter TargetName="theEllipse"
Property="Fill" Value="Yellow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值