zoukankan      html  css  js  c++  java
  • 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注册。

  • 相关阅读:
    Java/android下哈希sha1和MD5的实现
    ANDROID SOCKET 开发
    UML补充
    TCP协议中的三次握手和四次挥手(转)
    uva 658 最短路
    uva 11280 最短路
    uva 10246 最短路
    uva 11747,kruskal 并查集
    uva 544 dijkstra
    uva 1395 瓶颈树
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319317.html
Copyright © 2011-2022 走看看