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. 基于Qt的类QQ气泡聊天的界面开发

    近期在写IM 聊天界面,想设计出一个类似QQ气泡聊天的样式 使用了几种办法 1:使用Qt以下的QListview来实现QQ类似效果.差强人意 2:使用QWebview载入html css样式来完毕.发 ...

  2. CodeForces 377B---Preparing for the Contest(二分+贪心)

    C - Preparing for the Contest Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

  3. virtenv 0.8.6 发布,虚拟桌面配置工具 - 开源中国社区

    virtenv 0.8.6 发布,虚拟桌面配置工具 - 开源中国社区 virtenv 0.8.6 发布,virtenv 是一个用 QT4 开发的应用,用来配置和启动基于 LXC 的虚拟桌面环境.该容器 ...

  4. hdu 4274 Spy&#39;s Work(水题)

    Spy's Work Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. Palindrome Numbers(LA2889)第n个回文数是?

     J - Palindrome Numbers Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  6. undefined reference to `sin&#39;问题解决

    作者:zhanhailiang 日期:2014-10-25 使用gcc编译例如以下代码时报"undefined reference to `sin'": #include < ...

  7. PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)

    1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vecto ...

  8. ORA-16047: DGID mismatch between destination setting and target database

    做DG的时候 主库两个节点无法把日志传到备库上 SQL> select dest_name,status,type,database_mode,protection_mode,destinati ...

  9. cocos2dx使用tolua关于字符串处理的一个问题

    正在使用cocos2dx的tolua binding在此过程中发现的一个问题.假设一回或输入是std::string当我们不同意包括二进制数据,和std::string我同意,这样一来就导致了不正确的 ...

  10. CMS垃圾回收机制

    详解CMS垃圾回收机制   原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老 ...