Silverlight 模板(Template)使用

模板(Template)是控件另一种样式 它和样式(style)不同的是它允许已有的控件进行组合新的一个控件样式

  那么先看一下最简单Template代码

  xaml代码

<Button Content="Button" Height="23" HorizontalAlignment="Left"
Margin="44,30,0,0" Name="button1" VerticalAlignment="Top" Width="75" >
            <Button.Template>
                <ControlTemplate>
                    <Border BorderThickness="3" BorderBrush="#FF6969FF">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="#FF6F97FF" Offset="0" />
                                <GradientStop Color="#FF0021FF" Offset="0.574" />
                                <GradientStop Color="#FF6C7BFF" Offset="1" />
                            </LinearGradientBrush>
                        </Border.Background>
                        <TextBlock Text="按钮" HorizontalAlignment="Center"
VerticalAlignment="Center" Foreground="Lime"></TextBlock>
                    </Border>

                </ControlTemplate>
              </Button.Template>
        </Button>

效果图

  

那么复杂一些

  <ControlTemplate x:Key="tpe">
            <Border BorderThickness="3" BorderBrush="#FF6969FF">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FF6F97FF" Offset="0" />
                        <GradientStop Color="#FF0021FF" Offset="0.574" />
                        <GradientStop Color="#FF6C7BFF" Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
              <ContentPresenter VerticalAlignment="{ TemplateBinding VerticalAlignment }"
HorizontalAlignment="Center"></ContentPresenter>
             </Border>

        </ControlTemplate>

  <Button Content="Button" Template="{StaticResource tpe}" Height="23"
HorizontalAlignment="Left" Margin="44,30,0,0" Name="button1"
VerticalAlignment="Top" Width="75" >

效果图

  

  ContentPresenter表示针对Button的content属性一个映射方式

  那么紫色代码有个TemplateBinding 它表示指定一个相关属性映射 映射Button的 VerticalAlignment 的值 还可以margin映射padding 因为它们两个兼容

  在style可以用Template

  xaml代码

<Style x:Key="s1" TargetType="Button">
            <Setter Property="Template" Value="{StaticResource tpe}"></Setter>
 </Style>

   <Button Content="Button"  Style="{StaticResource s1}" Height="23"
HorizontalAlignment="Left" Margin="44,30,0,0" Name="button1"
VerticalAlignment="Top" Width="75" >

不过如果在style中设置某个属性的值 那么Template的TemplateBinding映射这个属性的值 不在控件上映射了

时间: 2024-12-27 07:48:09

Silverlight 模板(Template)使用的相关文章

Python - 定制pattern的string模板(template) 具体解释

定制pattern的string模板(template) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 string.Template的pattern是一个正則表達式, 能够通过覆盖pattern属性, 定义新的正則表達式. 如: 使用新的定界符"{{", 把{{var}}作为变量语法. 代码: # -*- coding: utf-8 -*- ''' Created on 2014.6.5

C++设计模式实现--模板(Template)模式

一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template提供了这种情况的一个实现框架. 二. 模式 Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节. 三. 代码 [cpp] view plaincopy //抽象基类,实现了一个模板方法 class AbstractClass { pu

C++ - 模板(template)中typename的使用方法

声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(dependent names): 模板(template)内出现的名称, 相依于某个模板(template)参数, 如T t; 嵌套从属名称(nested dependent names):从属名称在class内呈嵌套装, 如T::const_iterator ci; 非从属名称(non-dependent nam

转载:模板(template)中typename的使用方法

声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(dependent names): 模板(template)内出现的名称, 相依于某个模板(template)参数, 如T t; 嵌套从属名称(nested dependent names):从属名称在class内呈嵌套装, 如T::const_iterator ci; 非从属名称(non-dependent nam

Python - 定制语法的string模板(template) 详解

定制语法的string模板(template) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28614491 string模板(template)参考: http://blog.csdn.net/caroline_wendy/article/details/27054263 string.Template()内添加替换的字符, 使用"$"符号, 或 在字符串内, 使用"${}"; 调用时使

Python - 定制pattern的string模板(template) 详解

定制pattern的string模板(template) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 string.Template的pattern是一个正则表达式, 可以通过覆盖pattern属性, 定义新的正则表达式. 如: 使用新的定界符"{{", 把{{var}}作为变量语法. 代码: # -*- coding: utf-8 -*- ''' Created on 2014.6.5 @

【转载】C++中的模板template &lt;typename T&gt;

从一位大佬的程序中看到的,好像挺牛的!! 这个是C++中的模板..template<typename T> 这个是定义模板的固定格式,规定了的..模板应该可以理解到它的意思吧.. 比如你想求2个intfloat 或double型变量的值,只需要定义这么一个函数就可以了,假如不用模板的话,你就必须针对每种类型都定义一个sum函数..int sum(int, int);float sum(float, float);double sum(double, double); 1.因为T是一个模版实例化

C++类模板 template &lt;class T&gt;

C++在发展的后期增加了模板(template )的功能,提供了解决这类问题的途径.可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数. 比如: class Compare_int class Compare_float 都是比较大小的函数,只是参数类型不同,于是用一个类模版综合成一个函数: template <class numtype> //声明一个模板,虚拟类型名为numtype class Compare //类模板名为Compare { public : Compare(nu

Django[11]模板Template context和Bootstrap使用

视图views.py中: 1234567891011121314151617181920212223242526 from __future__ import unicode_literals from django.shortcuts import render # Create your views here.from django.http import HttpResponse def (request): context = { "title": "home&quo