Blend_ControlTemplate(Z)

2024-05-10 10:58
文章标签 blend controltemplate

本文主要是介绍Blend_ControlTemplate(Z),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于ControlTemplate没有一个特定的概念,为了避免过于抽象,可以简单的理解ControlTemplate是通过改变Style改变控件视觉效果的类。ControlTemplate可以被定义在控件的Xaml代码中,为了提高复用性,ControlTemplate也会被定义到资源文件中。

 

实例演示使用Blend创建新的控件ControlTemplate。

首先,在Blend中创建新的项目ControlTemplateDemo,上周Silverlight 4发布,我已经升级开发环境到Silverlight 4,VS2010和Blend 4 RC, 所以,以后所有项目演示将是基于.Net Framework 4的。

我们计划创建一个简单的按钮ControlTemplate,

现在,从左边工具栏选中矩形框,在主设计窗口画一个矩形框,使用Radius修改矩形框边缘为圆形。该矩形框是为了Button的模板控件做基础使用的。

然后修改矩形背景和边框颜色,这里大家可以按照自己的喜好和需求自行设置背景色和边框颜色。

 

 然后在主设计窗口选中该矩形控件,点击鼠标右键,选中“Make Into Control..."选项,

 

这个选项是将当前控件转换到指定控件模板中,在以下弹出窗口中,可以选择需要转换的控件类型,从以下窗口可以看出,矩形控件可以转换到所有控件模板中,下面Name是模板样式名称,Define in是创建该资源模板到指定位置。这些和前文教程内容相同,不再赘述。

 

这里,我们使用默认的name,将模板信息放在本地文档资源中,因为我们演示创建按钮controltemplate,所以在点击OK前,必须从上面的窗口中选择“Button”,点击OK后主设计窗口将显示按钮样式。

 

到这里一个简单的ControlTemplate已经创建完了。我们打开Objects and Timeline看看当前控件模板组成信息,从下图我们可以看到,该Button模板,是由一个矩形控件和ContentPresenter组成的。

再看看该按钮模板代码,从以下代码中可以看出,在资源中,定义了一个新的ControlTemplate,该控件模板目标控件类型是Button( <ControlTemplate TargetType="Button">),ControlTemplate内部由Rectangle和ContentPresenter组成。

复制代码
1 <UserControl.Resources>
 2     <Style x:Key="ButtonStyle1" TargetType="Button">
 3         <Setter Property="Template">
 4             <Setter.Value>
 5                 <ControlTemplate TargetType="Button">
 6                     <Grid>
 7                     <Rectangle RadiusY="20" RadiusX="20" Stroke="White" StrokeThickness="8">
 8                         <Rectangle.Fill>
 9                             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
10                                 <GradientStop Color="#FFF0F5FD" Offset="0"/>
11                                 <GradientStop Color="#FF009CFF" Offset="1"/>
12                             </LinearGradientBrush>
13                         </Rectangle.Fill>
14                     </Rectangle>
15                 <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
16                     </Grid>
17                 </ControlTemplate>
18             </Setter.Value>
19         </Setter>
20     </Style>
21 </UserControl.Resources>
复制代码

 

 

这时,我们可以保存所有修改,点击“F5”运行当前项目。在运行后,可以在浏览器中看到一个Button

但是该Button没有任何的视觉效果和Button事件。也就是说,在这个新的控件模板中,缺少VSM状态信息。根据上一篇Blend控制VSM中可以得知,在Blend中的States菜单栏中,可以轻松的控制控件的VSM状态,下面,我们添加一些简单的状态效果。

首先,选中新创建的Button控件,然后打开左边菜单栏States,如果没有发现该Tab,可以在Blend的Window菜单选中States就会出现了。

 

 

在按钮的Normal状态,就是我们初始化设置的状态,现在我们修改MouseOver的控件视觉效果.

在States中,选中MouseOver,然后在主设计窗口选中Button控件,

 

在右边Properties属性栏,简单的修改Button的背景色,

 

 

这样,鼠标覆盖到Button控件时,颜色会改变,再点击F5运行,可以将鼠标放在控件上,这时会发现VSM会切换视觉状态。

按照以上方法,我们修改“Pressed”和"Disabled“状态。

 

Pressed:

 

Disabled:

在运行F5后,测试会发现VSM状态切换已经实现,但是缺乏体验效果,当鼠标放在Button时,我们希望看到渐变效果,当鼠标点击Button后,也希望看到渐变效果,这里我们需要添加Transition过渡效果到各个状态。

在States菜单下,选中Normal状态,

 

在状态右边,会看到有个箭头状按钮,点击添加Transition过渡效果,

 

点击Transition按钮后,会弹出一个过渡效果列表,这里表示从Normal状态过渡到不同的状态所呈现的效果。

其中需要注意的是 "* -> Normal",表示从任何效果到Normal,“Normal -> *”,表示从Normal到任何效果。

这里,我们选中“Normal -> MouseOver”。

 

我们可以设置从Normal过渡到MouseOver要用什么动画效果呈现,过渡动画时间设置。

这里我们可以选择Easing效果,关于Easing的介绍,已经在过去的教程中详解,这里不再赘述。

设置过渡时间为0.3秒,点击F5,看看设置的效果,当鼠标放在Button后,会出现渐变的动画效果。

 

按照以上的方法,依次类推,

在MouseOver状态,添加Normal状态,

在Pressed状态,添加MouseOver状态,

再次运行项目,Button控件会在各种状态下出现不同的过渡动画效果。

 

 

 这时再次查看模板代码,会发现在ControlTemplate中,出现了VisualStateManager选项。

代码

 

我们简单的添加一个Button点击事件,来测试新创建的Button控件。

选中Button控件,在右边Properties属性栏上面,点击Events

Blend会列出该控件所有的Events事件,这里我们选中Click,双击后,在主设计窗口会切换到后台代码cs编辑界面. Blend自动创建Button控件Click事件方法,

我们在btDemo_Click中添加简单代码

 

1 private void btDemo_Click(object sender, System.Windows.RoutedEventArgs e)
2 {
3     // TODO: Add event handler implementation here.
4     btDemo.Content = "我是测试按钮";
5 }

 

F5测试,点击Button,会发现控件文本标签内容被修改。也说明我们创建的ControlTemplate已经继承了所有Button的功能。

自定义ControlTemplate控件模板创建完毕。

这篇关于Blend_ControlTemplate(Z)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976247

相关文章

混合模式属性background-blend-mode

background-blend-mode 是 CSS 中的一个属性,它允许你将背景图像与背景颜色或背景图像之间以一种特定的混合模式进行混合。这个属性为网页设计师提供了一种强大的方式来创建视觉上吸引人的背景效果,无需使用图像编辑软件或额外的图像文件。 background-blend-mode 可以应用于单个背景图像与背景颜色之间,或者当设置多个背景图像时,应用于这些图像之间。混合模式包括了许多

【unity实战】利用Root Motion+Blend Tree+Input System+Cinemachine制作一个简单的角色控制器

文章目录 前言动画设置Blend Tree配置角色添加刚体和碰撞体代码控制人物移动那么我们接下来调整一下相机的视角效果参考完结 前言 Input System知识参考: 【推荐100个unity插件之18】Unity 新版输入系统Input System的使用,看这篇就够了 Cinemachine虚拟相机知识参考: 【推荐100个unity插件之10】Unity最全的最详细的C

wpf DataTemplate 和 ControlTemplate 区别,应用举例

在WPF中,模版(ControlTemplate ) ControlTemplate用于定义控件的内部结构和外观,它决定了控件的“长成什么样子”,并允许开发者在控件原有的内部逻辑基础上扩展自己的逻辑。DataTemplate则专注于数据内容的展示方式,即数据如何被可视化呈现。 示例实现1. 定义歌曲类首先,我们定义一个Song类,用于表示歌曲数据。public class Song

【Unity Shader】Alpha Blend(Alpha混合)的概念及其使用示例

在Unity和图形编程中,Alpha Blend(也称为Alpha混合)是一种用于处理像素透明度的技术。它允许像素与背景像素融合,从而实现透明或半透明的效果。Alpha Blend在渲染具有透明度的物体(如窗户、玻璃、水、雾等)时非常重要。 Alpha Blend的概念: Alpha值:Alpha值是一个介于0(完全透明)和1(完全不透明)的数值,用于表示像素的透明度。混合模式:Alpha B

前端 CSS 经典:mix-blend-mode 属性

前言:这是一个混合属性,作用是将两个颜色混合生成一个新颜色。可以将视频和文字相融合,产生动态文字效果。 效果 实现代码  <!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><metaname="viewpo

Blend_技巧篇_导入PSD文件制作ToggleButton (Z)

=============开发环境============= 系统: Win7sp1 32位 IDE: Microsoft VisualStudio 2013 Ultimate Blend 2013 工程: .Net Framework4.5.1 工具: Photoshop CS6 ================================ 首先明确一点,ToggleButton实际上

Blend_界面快速入门(Z)

首先使用Blend按照以下步骤创建一个新的Silverlight项目,   1. 点击左上角的“File - New Project”,这时会弹出一个新建项目窗口,如下图   在上图可以看到Blend支持创建两个类型的项目,一个是Silverlight,另一个是WPF,本系列主要讨论Silverlight,所以,我们选择“Project Type -Silverlight”,在选中S

Blend_软件系列简介(Z)

随着计算机软件开发分工细节化,微软对已有的产品线进行了调整,在保持原有经典开发工具Visual Studio基础上,又推出了一套新的设计开发工具系列,Expression Studio。 Expression Studio设计工具系列包含四项主要产品:   Expression Blend  Expression Blend(下称Blend),是一款用于设计桌面和Web应用用户界面的可视

css mix-blend-mode 层叠样式属性各类效果

官方给出的定义是:mix-blend-mode css 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。 通俗来讲,就是一张图片跟它的父级元素背景色的融合方式。 大致分为以下16种: mix-blend-mode: normal;mix-blend-mode: multiply;mix-blend-mode: screen;mix-blend-mode: over

Unity中Skinned Mesh Renderer Blend Shapes小试

第一个应用:如何使用网格渲染器Blend Shapes Unity制作木棍剥皮 1、 Intro 2、Modeling (Blender) 打开Blender 软件 调整视角 然后快捷键: Shift+A 添加Mesh : Cylinder 顶点数改为:   Rotate Around X Axis : 快捷键 R+X+90   Scale :Y Axi