WPF常用模板

WPF中我们使用的模板类型总体分为两种:控件模板类型ControlTemplate和数据模板DataTemplate。由命名名称可看出它们都由基类FrameworkTemplate派生而出。

每个WPF中的控件都是有一个系统自带的控件模板,该模板默认定义了控件的样式属性,ControlTemplate控件模板的意义在于,在我们对系统给予的样式不满意时,就可以使用控件模板来自定义我们自己想要的理想样式。作用类似于对控件用Style属性来改变原来固定的样式,而控件模板又更高级,可以运用模板属性来实现控件内部结构的完全改变。在控件模板中起到重要作用属性的是来描述控件外观的属性VisualTree视觉树和对控件定义一些触发事件的属性Triggres触发器列表。通常在定义外观样式时视觉树写在<ControlTemplate> ... </ControlTemplate>之间。视觉树样式之后就可以定义其他内容,比如

Triggre触发事件,事件发生时的动画效果等等。触发器列表我们可以包含在<ControlTemplate.Triggers>... </ControlTemplate.Triggers>中,Trigger中需要定义Property所要触发的具体事件及其Value具体体现。关于触发器的部分基本指定赋值系统定义。拿Setter为例定义鼠标移入触发事件,按钮背景变红。

为了控件模板定义好以后方便使用,我们也可以将模板写在窗体的私有资源中,并且指明是按钮的指定控件模板TargetType="Button" x:Key="ButtonTemplate" ,那么该窗体下所有的按钮都可以运用到该模板中的样式及触发事件。

控件模板是对控件属性样式重新定义,同样,数据模板DataTemplate顾名思义与数据有关,即便这些数

据多数都是固定值,但我们可以使用数据模板来改变它的表现方式,使不变值具有多变的样式。例如当给列表框指定的样式时,列表框中的项以ToString()字符串输出显示。运用了DataTemplate后,可对其进行重写,然后重写定义项的展现形式。定义窗体私有资源用上面的模板改变ListBox控件样式外观。并且定义标记扩展Binding,使控件中的项能够调用到窗体后台代码所有的数据。

在上面的控件和数据模板中,有用到StaticResource和Binding两个标记扩展。StaticResource标记扩展的作用在案例中我们能够看到,因为没有扩展的情况下,控件本身的内容不能显示在定义好的新样式中,所以必须扩展已建好的模板。简单的说就是引用数据字典中定义的静态资源。Binding是在XAML载入时,将已有数据绑定到对应的XAML控件对象中去。Binding绑定调用数据,TemplateBinding标记及是对对象模板绑定调用。RelativeSource(对特定数据源引用) 有两种模式的应用,1.<Binding RelativeSource=“{RelativeSource Self}”.../> 或者<Object property=“{RelativeSource Self}”.../>此种是Self模式,可将目标对象作为绑定到自身的源对象,还可以实现同一对象不同元素属性间的绑定;2.<Binding RelativeSource=“{RelativeSource TemplateParent }”.../> 或者<Object property=“{RelativeSource TemplateParent}”.../>TemplateParent这种情况与模板有关,所以只在模板中使用有效,不同的模板的返回的绑定类型都是不同的数据类型。下面展示课堂授课所学的关于RelativeSource数据源引用书写代码格式,以及TemplateBinding模板调用的代码例子。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值