iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >WPF控件模板与其触发器
  • 526
分享到

WPF控件模板与其触发器

2024-04-02 19:04:59 526人浏览 安东尼
摘要

什么是ControlTemplate? ControlTemplate(控件模板)不仅是用于来定义控件的外观、样式, 还可通过控件模板的触发器(ControlTemplate.Tri

什么是ControlTemplate?

ControlTemplate(控件模板)不仅是用于来定义控件的外观、样式, 还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。

通过剖析控件了解ControlTemplate的组成:

  • 首先,创建一个WPF项目, 创建一个Button按钮, 然后选中该按钮, 右键选择编辑模板>编辑副本:

  • 创建完成后, 会在当前页面<windows.Resources> 键下面生成一些样式片段 , 一个key为ButtonStyle1的样式:

  • 在看到该样式定义了一些基础的样式, 背景颜色、字体颜色、边框大小、垂直水平位置等, 除此之外, 下方则有一个Template的对象, 其中则就是ControlTemplate, 可以看到, ControlTemplate定义了一个Border ,然后其中定义了一个内弄呈现的控件, ContentPresenter则主要用于呈现按钮的显示内容主体, 如下标记:

  • 我们可以进行一些尝试, 试图修改border的属性, 观察Button会发生怎样的变化, 通过为Border 添加一个 圆角矩形参数, 将背景颜色设置成固定的值, 如下:

通过简单的尝试,可以观察到, 该Border 作为Button按钮的边缘样式和整体的外观控制。

- 接下来, 我们可以通过修改ContentPresenter 中的一些参数, 看看该控件是怎样的一个存在。 修改其中的垂直位置为居下, 为Button设置一个固定Content的值 “Hello”, 观察Hello的位置:

通道实践, 可以了解到, 该内容呈现控件(ContentPresenter) 负责了内容的展示、和一部分属性的控制。

ControlTemplate中的TemplateBinding 的作用?

在ControlTemplate中, 可以看多多次有定义 TemplateBinding 的代码:

TemplateBinding 可以理解为, 通过模板绑定关联到指定的样式、属性。 如此一来 , 当按钮通过显示设置该属性, 则最终会影响着Template绑定的属性值。

下面将通过代码演示, 有 TemplateBinding 和 无TemplateBinding 的区别, 在Button按钮中, 显示定义 按钮的边框颜色为 “Blue”, 分别看两者中的影响:

图(1), 有TemplateBinding :

图(2), 无TemplateBinding:

可以理解, TemplateBinding 主要的作用为, 与外部的属性关系起来, 使其达到改变样式属性的作用。

ControlTemplate.Triggers 触发器

展开ControlTemplate.Triggers 节点, 可以看到其中定义了一些触发条件和改变的样式。

可以看到, 定义了4个触发器, 分别满足条件之后, 改变Border的一些样式, 接下来, 通过一张图,来解释其影响的过程:

实际效果:

同样, 其他的触发器也是通过这样的操作, 来控制着控件的属性变化。

ControlTemplate.EventTrigger 事件触发器

下面定义了一个EventTrigger 事件触发器,

当鼠标进入按钮区域时, 执行一个0.5秒的动画, 将按钮的背景颜色设置为 pink,

当鼠标离开按钮区域时, 执行一个0.5秒的动画,将按钮的背景颜色设置为Green:

实际效果:

自定义ControlTemplate

控件模板可以独立存在, 上面的例子中, 包含在样式文件中, 下面, 单独声明一个独立的控件模板:

  • 1.创建一个ControlTemplate ,设定一个键名称, 指定其模板的类型
  • 2.创建一个Border 用于设置按钮边样式
  • 3.创建一个内容呈现的控件, 设置几个参数的TemplateBinding.
  • 4.按钮的Template 绑定该模板

到此这篇关于WPF控件模板与其触发器的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: WPF控件模板与其触发器

本文链接: https://www.lsjlt.com/news/163999.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • WPF控件模板与其触发器
    什么是ControlTemplate ControlTemplate(控件模板)不仅是用于来定义控件的外观、样式, 还可通过控件模板的触发器(ControlTemplate.Trig...
    99+
    2024-04-02
  • WPF控件模板与其触发器是怎样的
    WPF控件模板与其触发器是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是ControlTemplateControlTemplate(控件模板)不仅是用于来定义控件...
    99+
    2023-06-29
  • WPF中Style样式及其触发器
    WPF中的各类控件元素, 都可以自由的设置其样式。 诸如: 字体(FontFamily)字体大小(FontSize)背景颜色(Background)字体颜色(Foreground)边...
    99+
    2024-04-02
  • MySQL事件与触发器专题精炼
    目录了解触发器和事件(定时器)什么是触发器?什么是事件(定时器)?触发器和事件(定时器)的区别创建触发器和事件(定时器)创建触发器创建事件(定时器)对触发器和时间(定时器)的操作查看...
    99+
    2024-04-02
  • thinkphp5模板中怎么调用控制器文件
    本篇内容介绍了“thinkphp5模板中怎么调用控制器文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、ThinkPHP 5 中的控制器...
    99+
    2023-07-06
  • PHP实现邮件模板生成与发送的技术
    随着电子邮件的普及,越来越多的企业开始使用邮件作为宣传、销售和客户沟通的主要渠道。为了提高邮件的效率和统一度,邮件模板成为了企业使用邮件的一个必要工具。在本文中,我们将重点介绍如何使用PHP实现邮件模板的生成和发送。一、创建邮件模板首先,我...
    99+
    2023-05-23
    PHP 邮件 模板
  • ASP.NET控件设计时操作列表与模板编辑的示例分析
    小编给大家分享一下ASP.NET控件设计时操作列表与模板编辑的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ASP.NET控件设计时操作列表与模板编辑一....
    99+
    2023-06-18
  • 什么是 MySQL 事件以及它与触发器有何关系?
    MySQL 事件是一项基于预定义计划运行的任务,因此有时将其称为计划事件。换句话说,我们可以说MySQL事件调度是一个在后台运行并不断寻找要执行的事件的进程。它被称为临时触发器,因为它们是按时间触发的,而不是像基于表更新执行的触发器。我们可...
    99+
    2023-10-22
  • ASP 容器 API 文件:如何与其他开发者协作?
    ASP容器API文件:如何与其他开发者协作? ASP容器API(Application Programming Interface)是一种用于构建动态Web应用程序的框架。它提供了一系列的类和方法,用于处理HTTP请求和响应,以及与数据库交...
    99+
    2023-08-19
    容器 api 文件
  • javascript当对象被鼠标拖动的对象进入其容器范围内时触发此事件使用什么函数,详细讲解
    这篇文章将为大家详细讲解有关javascript当对象被鼠标拖动的对象进入其容器范围内时触发此事件使用什么函数,详细讲解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 当鼠标拖动的对象进入其容器范围时触...
    99+
    2024-04-02
  • javascript当对象被鼠标拖动的对象离开其容器范围内时触发此事件使用什么函数,详细讲解
    这篇文章将为大家详细讲解有关javascript当对象被鼠标拖动的对象离开其容器范围内时触发此事件使用什么函数,详细讲解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。javascript 当对象被鼠标拖动...
    99+
    2024-04-02
  • 原创AJAX + PHP 编辑器内容自动备份草稿保存到本地 (适用ueditor百度编辑器或其它) 内容变化后自动触发备份txt文件
    百度自带的自动备份功能enableAutoSave存在问题, 比如第一个文章他自动备份了.等发表第二个文章时,结果把第一个文章的内容自动填充进去了.关键你还不知情!出现过多次这种情况了. 一, 百度原...
    99+
    2023-10-05
    编辑器自动保存 编辑器自动备份 编辑器自动草稿
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作