1,控件模板 (见Project22)

(1) 什么是控件模板,查中文帮助

说明:
当控件自身属性已经无法达到你对控件外观设置的要求时(比如将按钮作成圆形),此时控件模板
就发挥了很大的作用

使用:

<控件.Template>
<ControlTemplate>你的内容...</ControlTemplate>
</控件.Template>

(2) 控件模板与属性,样式,三者有哪些区别

说明:
属性:如控件的Width,Height等对控件外观等方面的一些设置
样式:它实际就是对属性的设置,将其按不同的作用域大小的方式将属性设置更灵活方便
控件模板:它可以将控件的外观变的更复杂。此外,也可以将控件模板作为一个Property,定义在Style样式里

(3) 将一个按钮,做成一个色块和文字的外观,再更改按钮的Content属性,发现什么问题,如何解决(用到TemplateBinding)

说明:

使用ControlTemplate来自定义控件的外观

<Button.Template>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Width="20" Height="20" Fill="Red" />
<TextBlock Text="OK" />
</StackPanel>
</ControlTemplate>
</Button.Template>

问题:更改Button的Content值,失效
解决:使用TemplateBinding绑定Content
<TextBlock Text="{TemplateBinding Button.Content}" />

(4) 把(2)中的示例改成作用于页面级的控件模板

说明:

定义样式

<UserControl.Resources>
<Style x:Key="ButtonStyle1" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Width="20" Height="20" Fill="Red"/>
<TextBlock Text="{TemplateBinding Button.Content}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>

应用样式

<Button Style="{StaticResource ButtonStyle1}"

(5) 把 (3) 中的示例,改成作用于全局的控件模板

说明:把上面(4)中的样式,Copy到App.xaml中,即可

(6) 什么是视觉状态管理

说明:
视觉状态管理英文名是VisualStateManager,简称VSM.它可以表示出控件感知效果,比如Mouseover,Pressed等状态
下的动画效果
它一般被定义在控件的ControlTemplate中

使用格式:

<VisualStateManager.VisualStateGroups>
<VisualStateGroup> <!--可选的-->
<VisualState x:Name="MouseOver"> <!--视觉状态-->
<StoryBoard /> <!--感知效果:定义动画-->
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>

解释:
VisualStateGroup标签,是将一些具有相同特性的VisualState组织在一起

(7) 以按钮为例,说明VSM的内容

说明:

可以通过VSM来设置它不同状态下的感知效果

可以将按钮的状态分成两组

第1组状态

<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver" />
<VisualState x:Name="Pressed" />
<VisualState x:Name="Disabled" />
</VisualStateGroup>

第2组状态

<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused" />
<VisualState x:Name="Unfocused" />
</VisualStateGroup>

(8) 什么是视觉状态迁移

说明:
视频状态迁移标签是VisualTransition
它表示控件从一种状态进入另一种状态,它所需要的时间间隔,以及中间会有哪些效果

使用格式:

<VisualStateGroup>
<VisualStateGroup.Transitions>
<!-- 指定该按钮应经过百分之一秒才从按下状态进入鼠标悬停状态-->
<VisualTransition From="Pressed" To="MouseOver" GeneratedDuration="0:0:0.01" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal"/>
</VisualStateGroup>

Sliverlight之 控件模板的更多相关文章

  1. Blend 2015 教程 (四)控件模板

    前一篇讲述了修改ListBox样式的方法,本篇将修改性别显示区域的样式. 1. 选择ListBox控件,编辑ItemTemplate的当前项,选择CheckBox控件,在美工板导航栏中点击CheckB ...

  2. WPF控件模板

    引言:在进行WPF项目开发过程中,由于项目的需要,经常要对某个控件进行特殊的设定,其中就牵涉到模板的相关方面的内容.本文也是在自己进行项目开发过程中遇到控件模板设定时集中搜集资料后整理出来的,以供在以 ...

  3. WPF--Blend制作Button控件模板--问题补充

    补充记录Button控件模板 控件模板制作过程中出现下图问题:动画对象不能用于动画属性"Fill” 并且这类问题Blend4中包括VS2010中仍然可以运行,但是只有VS2010中会报错:如 ...

  4. WPF--Blend制作Button控件模板

    博客园新人,WPF初学者.不涉及理论知识,直接进入操作. 记录一下使用Blend制作Button控件模板过程中,学到Blend几个知识点: 1.渐变画笔编辑器的Alpha选项可以调控件的透明度.即下图 ...

  5. WPF中的ControlTemplate(控件模板)(转)

    原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板)     ...

  6. 《Programming WPF》翻译 第5章 7.控件模板

    原文:<Programming WPF>翻译 第5章 7.控件模板 如果仔细的看我们当前的TTT游戏,会发现Button对象并没有完全为我们工作.哪些TTT面板有内圆角? 图5-14 这里 ...

  7. WPF笔记(1.9 样式和控件模板)——Hello,WPF!

    原文:WPF笔记(1.9 样式和控件模板)--Hello,WPF! 资源的另一个用途是样式设置: <Window >  <Window.Resources>    <St ...

  8. Windows Phone开发(16):样式和控件模板

    原文:Windows Phone开发(16):样式和控件模板 在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的 ...

  9. WPF基础篇之控件模板(ControlTemplate)

    WPF中每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应.我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件. 与Style不同,Style只能改变控件 ...

随机推荐

  1. [.NET Framework学习笔记]一些概念

    CIL:Common Intermediate Language 公共中间语言 VB.NET 和 C#.NET 编译以后都生成相同的中间语言,程序集就是由CIL组成的,CIL代码也叫做托管代码,因为C ...

  2. dtach-linux-分离功能-小工具 - 点点滴滴 Linux | 点点滴滴 Linux

    dtach-linux-分离功能-小工具 - 点点滴滴 Linux | 点点滴滴 Linux dtach-linux-分离功能-小工具 2013年05月20日 ⁄ Linux工具 ⁄ 共 1775字 ...

  3. GitHub上最火的40个iOS开源项目

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS. Mac OS X网络通信类库,现在是 ...

  4. Activity数据传输到服务

    activity数据接口负责启动该服务包.service获取数据.手术. 详细demo如下面: package com.example.android_service_trance; import a ...

  5. spring Annotation 组分注塑

    spring 注意分类 启动spring自己主动扫描功能 <context:component-scan/> 1.@Repository: 它用于将数据訪问层 (DAO 层 ) 的类标识为 ...

  6. 基于HTTP和TFTP的PXE批量自动化安装Linux系统

    CentOS 6.5 PXE自动化部署系统 拓扑图如下: 步骤: 1.  安装http服务,上传ISO文件 [root@UCS-1 ~]# yum install httpd –y [root@UCS ...

  7. MVC应用程序与单选列表

    原文:MVC应用程序与单选列表 前几天,Insus.NET有在MVC应用程序中,练习了<MVC应用程序,动态创建单选列表(RadioButtonList)>http://www.cnblo ...

  8. 基于Grunt的版本号构建系统新手教程

    作者:zhanhailiang 日期:2014-10-12 1. 安装nodejs,npm,grunt-cli.參见<Windows环境下安装nodejs+npm+grunt-cli工具> ...

  9. JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式

    近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 /  所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径  由于使用绝对路径是绝对不会出 ...

  10. SVN的switch命令

    语法就不说了,文档有的是,主要是两个常用的用法: . 切换资源库(svn sw --relocate) [plain] view plaincopy svn sw --relocate <fro ...