WPF中的模板


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注册。

posted @ 2010-05-05 21:53  音乐啤酒  阅读(442)  评论(0编辑  收藏  举报