教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> IT计算机> .NET> 使用XAML创建按钮

使用XAML创建按钮

上传者:秦会斌
|
上传时间:2015-04-22
|
次下载

使用XAML创建按钮



本演练的目的在于介绍如何创建要在 Windows Presentation Foundation
(WPF) 应用程序中使用的动画按钮。本演练使用样式和模板来创建自定义的按
钮资源,通过该按钮资源可以重用代码并将按钮逻辑与按钮声明分开。本演练完
全是用可扩展应用程序标记语言 (XAML) 编写的。


本演练指导您通过在 Microsoft Visual Studio 中键入或复制和粘贴可扩展应
用程序标记语言 (XAML) 来逐步创建应用程序。
下图显示的是已完成的按钮。


让我们首先从创建一个新项目并向窗口中添加几个按钮开始。
创建新的 WPF 项目并向窗口中添加按钮

创建新的 WPF 项目:在“文件”菜单上,指向“新建”,再单击“项目”。此
时将打开下图所示的窗口。在左窗格中的“Visual C#”节点下面,选择“.NET
Framework 3.0”。在右窗格中,选择“Windows 应用程序 (WPF)”模板。将该
项目命名为“AnimatedButton”。这将创建应用程序的主干。

添加基本的默认按钮:本演练中所需的全部文件均由该模板提供。通过在解决方
案资源管理器中双击 Window1.xaml 文件来打开它。默认情况下,Window1.xaml
中存在一个 Grid 元素。移除 Grid 元素,并通过向 Window1.xaml 中键入或复
制和粘贴以下突出显示的代码来向可扩展应用程序标记语言 (XAML) 页面中添
加几个按钮:

按 F5 运行该应用程序;您应当能够看到类似下图的一组按钮。

现在您已经创建了基本按钮,这样就完成了在 Window1.xaml 文件中的工作。本
演练其余部分重点介绍如何在 app.xaml 文件中为这些按钮定义样式和模板。
接着,我们将会为这些按钮设置一些属性,以便控制按钮外观和布局。
您将使用资源来为整个应用程序定义按钮属性,而不是为这些按钮单独设置属
性。在概念上,应用程序资源与网页的外部级联样式表 (CSS) 相似;但是,资
源远比级联样式表 (CSS) 强大,在本演练结束时您将明白这一点。

定义 Application.Resources 块:打开 app.xaml 并添加下面突出显示的标记
(如果尚未添加):

资源范围由资源的定义位置来确定。如果资源是在 app.xaml 文件的
Application.Resoureses 中定义的,则将允许从应用程序中的任何位置使用资
源。
创建一个样式并用该样式定义基本属性值:向 Application.Resources 块添加
下面的标记。此标记创建一个应用于该应用程序中所有按钮的 Style,并将这些
按钮的 Width 设置为 90,将 Margin 设置为 10:

TargetType 属性指定将该样式应用于 Button 类型的所有对象。每个 Setter
都为 Style 设置不同的属性值。因此,此时该应用程序中的每个按钮的宽度都
为 90,边距都为 10。如果您按 F5 运行该应用程序,则将看到下面的窗口。

您还可以对样式进行更多的处理,这包括以各种方式微调对象的目标、指定复杂
的属性值,甚至将样式作为其他样式的输入。
为资源设置样式属性值:使用资源,可以通过一种简单的方式来重用通常定义的
对象和值。为了使代码更加模块化,使用资源定义复杂值尤其有用。向 app.xaml
添加下面突出显示的标记。

您已经在 Application.Resources 块的正下方创建了一个名为
“GrayBlueGradientBrush”的资源。此资源将定义一个水平渐变。此资源可以
在该应用程序中的任何位置(包括 在 Background 属性的按钮样式 setter 内
部中)用作属性值。现在,所有的按钮都具有此渐变的 Background 属性值。
按 F5 运行该应用程序。其外观类似于下图:


在本节中,将创建一个用来自定义按钮外观(表示)的模板。按钮表示是由几个
赋予按钮独特外观的对象(包括矩形和其他组件)组成的。
到目前为止,对应用程序中按钮外观的控制已限制为更改按钮的属性。如果您希
望更彻底地改变按钮的外观,该怎么办?使用模板可以强有力地控制对象的表
示。由于模板可以在样式中使用,因此您可以将模板应用于所有应用了样式的对
象(在本演练中为按钮)。

设置模板:由于控件(如 Button)具有 Template 属性,因此您可以像对 Style
中所设置的其他属性值那样,使用 Setter 来定义模板属性值。向按钮样式中添
加下面突出显示的标记。

更改按钮表示:此时,您需要定义模板。添加下面突出显示的标记。此标记指定
了两个后跟 DockPanel 且具有圆角的 Rectangle 元素。DockPanel 用于承载按
钮的 ContentPresenter。A ContentPresenter 显示按钮的内容。本演练中,内
容为文本 ("Button 1", "Button 2", "Button 3")。所有模板组件(矩形和
DockPanel)都放置在一个 Grid 内。

按 F5 运行该应用程序。其外观类似于下图:

向模板中添加玻璃效果:接着将添加玻璃效果。首先创建一些用来生成玻璃渐变
效果的资源。将这些渐变资源添加到 Application.Resources 块中的任何位置:

这些资源将用作按钮模板的 Grid 中所插入的矩形的 Fill。
向模板添加下面突出显示的标记。

请注意,x:Name 属性为“glassCube”的矩形的 Opacity 为 0,因此,当您运
行该示例时,将看到上面并没有覆盖玻璃矩形。这是由于我们将在以后向该模板
中添加用户与该按钮交互时将触发的触发器。但是,您可以通过将 Opacity 值
更改为 1 并运行该应用程序来查看按钮现在的外观。请参见下图。在转至下一
步之前,请将 Opacity 更改回 0。


在本节中,将创建属性触发器和事件触发器来更改属性值和运行动画,以响应用
户操作(如将鼠标指针移到按钮上并单击)。
添加交互性(鼠标悬停、鼠标离开和单击等)的一个简便方法就是在模板或样式
内部定义触发器。若要创建 Trigger,需要定义一个属性“条件”,例如:按钮
的 IsMouseOver 属性值等于 true。随后将定义在触发条件为 true 时所发生的
setter(操作)。

添加模板触发器:向模板添加突出显示的标记。

添加属性触发器:向 ControlTemplate.Triggers 块添加突出显示的标记:

按 F5 运行应用程序,并查看在将鼠标指针移到按钮上时的效果。
添加焦点触发器:接着,将添加一些类似的 setter 来处理当按钮具有焦点时(例
如,当用户单击按钮之后)的情况。

按 F5 运行应用程序,并单击其中的某个按钮。请注意,在单击该按钮之后,该
按钮仍具有焦点,因此它仍将保持突出显示状态。如果您单击另一个按钮,则新
按钮将获得焦点,而上一个按钮则失去焦点。
为 MouseEnter 和 MouseLeave 添加动画:接着将向触发器添加一些动画。
在 ControlTemplate.Triggers 块内部的任意位置添加下面的标记。

当鼠标指针移到该按钮上时,玻璃矩形会收缩;当指针离开该按钮时,镜面矩形
会返回到其正常大小。
当指针移到该按钮上(引发 MouseEnter 事件)时会触发两个动画。这些动画会
使玻璃矩形沿着 X 轴和 Y 轴收缩。请注意 DoubleAnimation 元素的属性:
Duration 和 By。Duration 指定动画持续半秒多,By 指定玻璃收缩 10%。
第二个事件触发器 (MouseLeave) 只是停止第一个触发器。当您停止某个
Storyboard 时,所有的动画属性都恢复到其默认值。因此,当用户将指针移开
按钮时,该按钮将返回到鼠标指针移到其上之前的状态。
添加单击按钮时的动画效果:最后一步是添加在用户单击按钮时将触发的触发
器。在 ControlTemplate.Triggers 块内部的任意位置添加下面的标记:

按 F5 运行应用程 序,并单击其中的某个按钮。当您单击某个按钮时,玻璃矩形
会旋转。

在本演练中,进行了下列练习:
使 Style 面向对象类型 (Button)。
使用 Style 控制整个应用程序中按钮的基本属性。
创建要用于 Style setter 的属性值的资源(如渐变)。
通过向按钮应用模板来自定义整个应用程序中按钮的外观。
自定义按钮的行为(包括动画效果)来响应用户操作(如 MouseEnter、MouseLeave
和 Click)。

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注

教师资格考试教育学辅导之填空题集锦二
2014年教资考试中学《教育知识与能力》模拟试题及参考答案(材料分析题一)
2014教资考试幼儿《保教知识与能力》模拟试卷三
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(案例分析题三)
教师资格考试教育学辅导之解答题集锦二
教师资格考试教育学辅导之解答题集锦一
2014教资考试小学《教育知识与能力》高频考点二
2014年教资考试中学《教育知识与能力》模拟试卷四
教师资格考试教育学辅导之填空题集锦一
2014教资考试幼儿《保教知识与能力》模拟试卷四
2014年教师资格证考试《幼儿教育学》模拟试题及答案(论述题)
2014年教资考试中学《教育知识与能力》模拟试题及参考答案(判断题一)
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(简答题四)
2014教资考试小学《教育知识与能力》高频考点一
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(论述题三)
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(简答题三)
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(活动设计题三)
教师资格考试:幼儿教育心理学经典案例分析题(二)
教师资格考试教育学辅导之解答题集锦四
教师资格考试:幼儿教育心理学经典案例分析题(一)
2014教师资格考试教育心理学解答题集锦四
2014年教资考试中学《教育知识与能力》模拟试卷六
2014教资考试幼儿《保教知识与能力》模拟试卷一
2014教师资格考试教育心理学解答题集锦二
2014年教资考试中学《教育知识与能力》模拟试题及参考答案(解答题一)
2014年江西省教师资格考试《中学教育学》模拟试题一
教师资格考试:幼儿教育心理学经典案例分析题(三)
2014教师资格考试教育心理学解答题集锦三
教师资格考试:湖北《保教知识与能力》模拟练习及参考答案(案例分析题二)
2014年教师资格证考试《幼儿教育学》模拟试题及答案(解答题)

网友关注视频

【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,辽宁省
冀教版小学数学二年级下册第二单元《有余数除法的整理与复习》
沪教版牛津小学英语(深圳用) 六年级下册 Unit 7
二年级下册数学第一课
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,天津市
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
沪教版八年级下次数学练习册21.4(2)无理方程P19
人教版二年级下册数学
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
沪教版牛津小学英语(深圳用) 四年级下册 Unit 4
人教版历史八年级下册第一课《中华人民共和国成立》
外研版英语三起5年级下册(14版)Module3 Unit2
化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
苏教版二年级下册数学《认识东、南、西、北》
北师大版数学 四年级下册 第三单元 第二节 小数点搬家
第4章 幂函数、指数函数和对数函数(下)_六 指数方程和对数方程_4.7 简单的指数方程_第一课时(沪教版高一下册)_T1566237
沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
第五单元 民族艺术的瑰宝_16. 形形色色的民族乐器_第一课时(岭南版六年级上册)_T1406126
第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
苏科版数学七年级下册7.2《探索平行线的性质》
冀教版英语三年级下册第二课
北师大版小学数学四年级下册第15课小数乘小数一
《小学数学二年级下册》第二单元测试题讲解
8 随形想象_第一课时(二等奖)(沪教版二年级上册)_T3786594
外研版英语七年级下册module3 unit2第二课时
外研版八年级英语下学期 Module3
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,江苏省
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省