1.数据模板
wpf的数据模板在之前的文章已经使用过,就是绑定数据的时候,定义一个数据模板来设置数据内容的显示方式
datatemplate,定义在资源中,然后数据控件可以引用这个数据模板
2.控件模板
wpf中所有可视的控件都拥有控件模板这个属性,有了这个属性就可以控件呈现出各种模样出来,而不是默认的模样
//这个使用button控件,典型的语法如下
<Button Name="btn1" Click="btn1_Click">
<Button.Template>
<ControlTemplate>
<Border Name="border" Background="Gray" BorderBrush="Red" BorderThickness="5">
<TextBlock Text="{TemplateBinding Button.Content}"></TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="border" Property="Background" Value="yellow"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
在 <TextBlock Text="{TemplateBinding Button.Content}"></TextBlock>地方有个特殊的绑定:模板绑定,
templatebinding,这个绑定其实就是将模板中的控件和真正的最外层的button联系到一起,就是说textblock显示内容就是button的内容“button with template”。除此之外,还可以使用button各个属性,使模板内的控件和button的某些属性保持一致
在控件模板中可以使用触发器,触发器的用法和在style中介绍的用法很类似,具体参考wpf中触发器
唯一的小差别是控件和模板中有很多控件,要指定这个触发器使用的对象TargetName="border"
控件模板当然可以定义到资源中,指定一个key以后,window窗口的控件都可以使用template属性来使用这个模板控件
<window.resouce></...>
...
<button name="b" template="{staticresource templateKeyName}">...
3.模板和样式的统一
典型的写法:
<style>
<setter property="template">
<setter.value>
<controltemplate>...</controltemplate>
</setter.value>
</setter>
</style>
本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。