Expression Blend ButtonStyle- TextButton

本章以TextButton为例,讲解如何最简单,最快速的制作一个专业的TextButton。

对于这个TextButton的需求是这样的,鼠标悬浮时,光标变为“手指”,并改变按钮的前景色,鼠标按下时,有明显的按下的感觉。

都会遇到一个问题,ContentPresenter没有Foreground属性,如何改变前景色?

新建一个TextBlock,输入I'm TextButton

  右击TextBolck,选择Make Into Control

  为我们的样式取名为TextButtonStyle,Blend默认每次新建样式时的ControlType就是Button,所以直接点击OK

看一下Blend为我们生成的元素列表,他将TextBlock自动转换为ContentPresenter,并用一个Grid包裹。

鼠标悬浮时,改变按钮的前景颜色,为了实现这个效果,先将ContentPresenter替换为ContentControl 。(替换方法为:先删除ContentPresenter,然后点击工具条上的按钮,在搜索栏中输入ContentControl,如果没结果请稍等几十秒s)

注意:wpf中使用这种方法也是可行的。只是将ContentPresenter替换为ContentControl后,必须给ContentControl加上“SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"”。

  将ContentControl.Content属性与Button逻辑树中的Content属性绑定。点击ContentControl,在右侧属性面板中,找到Content属性,点击Content属性最右侧的小方块。    

  在弹出菜单中,顺序选择Template Binding -> Content

  如果你上面的步骤都操作正确的话,ContentControl的Content属性会自动绑定我们之前输入的文本    

注意:wpf的过程中是丢失字体的,需要重新添加

为什么要使用ContentControl?原因在于ContentControl比ContentPresenter多了一个Foreground属性。这样我们可以方便的改变按钮的前景色,无论他是文本还是Path。下面我们开始制作OnMouseOver时的动画,尝试改变前景色。打开States面板,选择MouseOver,点击显示时间线图标,将黄色时间线拖拽到0.3秒处。

  设置前景色为#FFDE9107

  点击停止录制按钮,暂时暂停动画的录制。

  设置Cursor为hand,然后点击开始录制按钮,启动动画录制。

  此时MouseOver状态下动画面板应该是这样的

  接下来我们定义压下效果,首先右击States面板中的MouseOver,选择Copt State To然后选择Pressed

  点击Preesed状态,在对象面板中选中ContentControl

  设置ContentControl的RenderTransform.TranslateX 为1 ,RenderTransform.TranslateY为1

  此时Pressed状态下动画面板应该是这样的

转载于:https://www.cnblogs.com/iChina/archive/2011/11/26/2264661.html

Expression Blend学习5控件-TextButton相关推荐

  1. Expression Blend学习5控件

    Expression Blend ButtonStyle- TextButton 本章以TextButton为例,讲解如何最简单,最快速的制作一个专业的TextButton. 对于这个TextButt ...

  2. Expression Blend学习动画基础

    原文:Expression Blend学习动画基础 什么是动画(Animation)? 动画就是时间+换面的组合,画面跟着时间变化.最常见的是flash的动画,还有GIF动态图片. 动画的主要元素 时 ...

  3. Delphi 7学习开发控件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 我们知道 ...

  4. 二,控件学习--2.控件基类-QObject

    学习计划 功能作用 1.对象名称,属性. 应用场景 进行控件样式的分组管理 from PyQt5.Qt import *class Window(QWidget):def __init__(self) ...

  5. Expression Blend 学习视频下载

    微软Expression Blend功能介绍Microsoft Expression Blend-一个全新的,全功能的职业设计工具,用于创造基于Microsoft Windows平台的丰富.复杂的应用 ...

  6. 学习UpdatePanel控件

    UpdatePanel控件的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖 ...

  7. C#学习--dotnetbar控件学习

    1.添加控件 首先添加选项卡-〉添加项->选项卡不切换直接选择浏览到DevComponents.DotNetBar2.dll-〉这时控件会自动呈选中状态-〉点击任意一个会全选所有控件-〉确定

  8. LibUIDK 学习------CSkinListCtrl控件消息响应事件

    2021年修改了控件继承自CUIWnd,因此对于CSkinListCtrl控件的消息响应如下: ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)     ON_ ...

  9. C++桌面应用开发(Qt学习)——控件(2)ItemWidget

    ① QListWidget 列表容器 QListWidgetItem * item 一行内容 //利用listWidget写一行诗QListWidgetItem *item = new QListWi ...

  10. [C#学习] BindingNavigator控件

    一 概述 BindingNavigator控件的用户界面 (UI) 由一系列 ToolStrip 按钮.文本框和静态文本元素组成,用于进行大多数常见的数据相关操作(如添加数据.删除数据和在数据中导航) ...

最新文章

  1. 使用ServiceStackRedis链接Redis简介
  2. 谁是谷歌想要的人才:智商高不见得总是好员工
  3. 计算机转集成光学,最新集成光学考试总结.docx
  4. android opencv 识别文字_基于SpringBoot的车牌识别系统(附项目地址)
  5. [C++] socket - 3 [线程简单例子 代码]
  6. Ajax联手SOA打造企业级应用
  7. UVa11988 Broken Keyboard(练习链表使用)
  8. Qt中修改应用程序和标题栏的图标
  9. 修改数据库参数oracle,Oracle 修改数据库基本参数
  10. linux gfs原理,Linux GFS 配置方法及注意事项
  11. 豆瓣镜像源的使用与pip包版本控制
  12. 【Kafka】Kafka如何开启SSL 控制台消费与生产 代码消费与生产
  13. 我是一名服装公司的老板娘,年收入千万上下
  14. .net core中使用autofac进行IOC
  15. 2020-12-06 高等数学:常用积分公式
  16. 使用tesseract-ocr进行文字识别
  17. 从MOSSE到KCF,再从KCF到C-COT,再从C-COT到ECO梳理
  18. 安徽大学计算机专硕学几年,安徽大学专业硕士学制几年
  19. matlab仿真的实例,MATLAB仿真实例
  20. 分布式计算原理之分布式协调与同步(1)——分布式选举

热门文章

  1. ImageLoader的简单分析
  2. Flink+Hudi 构架湖仓一体化解决方案
  3. Flink 中的应用部署:当前状态与新应用模式
  4. 这场直播,我们把 Apache 顶级项目盛会搬来了!
  5. Tomcat无法启动:Server Tomcat v8.5 Server at localhost failed to start
  6. 厉害了!为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
  7. 调用dll 返回65535_一种通用DLL劫持技术研究
  8. python-gui-pyqt5的使用方法-3--自定义信号的初识
  9. H3C交换机设备使用QOS策略方式实现报文过滤
  10. mysql 5.6的安装