- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WPF编程宝典使用C# 2008和NET 35(第2版)样式.txt∞-一人行,必会发情 二人行,必会激情 三人行,必有奸情 就不会被珍惜。真实的女孩不完美,完美的女孩不真实。得之坦然,失之淡然,顺其自然,争其必然。 本文由隐于山林贡献
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第 12 章
样
式
在第 11 章学习了 WPF 资源系统,使用资源可以在一个地方定义对象而在整个标记中使用 它们。尽管可以使用资源存储各种对象,但是使用资源最常见的原因是通过它们保存样式。 样式是可以应用到元素的属性值的集合。WPF 样式系统和 HTML 标记中的层叠样式表 (cascading style sheet,CSS)标准扮演类似的角色。和 CSS 类似,通过 WPF 样式可以定义格式 化特性集合,并且为了保证一致性,在整个应用程序中应用它们。同 CSS 一样,WPF 样式也 可以自动工作,指定具体的元素类型,并且通过元素树层叠起来。然而,WPF 样式的功能更加 强大,因为它们能够设置任何依赖项属性。这意味着可以使用它们标准化未格式化的特性,如 控件的行为。WPF 样式还支持触发器,当一个属性发生变化时可以通过触发器改变控件的样式 (正如将要在本章中介绍的那样), 并且能够使用模板重新定义控件的内置外观(将在第 15 章中介 绍这些内容)。一旦学习了如何使用样式,就可以在所有的 WPF 应用程序中使用它们。
12.1
样式基础
在第 11 章中已学习过, 资源具有几个重要的优点, 包括简化标记和使应用程序更容易维护。 那么样式有哪些优点呢? 为了理解适合使用样式的场合,分析一个简单的示例十分有帮助。设想需要标准化在窗口 中使用的字体。最简单的方法是设置包容器窗口的字体属性。这些属性是在 Control 类中定义 的,包括 FontFamily 属性、FontSize 属性、FontWeight 属性(用于粗体)、FontStyle 属性(用于斜 体)以及 FontStretch 属性(用于压缩的或扩展的变体)。幸运的是,这些属性值具有继承特性,当 在窗口级别上设置这些属性时,在窗口中的所有元素都会使用相同的属性值,除非显式地覆盖 它们。 注意: 属性值继承是依赖项属性提供的许多可选的特性之一。在第 6 章已介绍了依赖项属性。 现在考虑一种不同的情况,希望只为用户界面中的一部分锁定字体。如果能够在一个特定 包容器中隔离这些元素(例如,它们都处于一个 Grid 面板或 StackPanel 面板中),可以使用本质 上相同的方法,并设置包容器的字体属性。但问题并不总是这么简单。例如,可能希望使所有 的按钮具有一致的字体和文本尺寸,并且使用和其他元素不同的字体设置。对于这种情况,就 需要另外一种方法,在某个地方定义这些细节,并在所有应用它们的地方重用这些细节。 资源提供了一个解决方案,但是有些笨拙。因为在 WPF 中没有 Font 对象(只有与字体属性
第 12 章
样
式
相关的集合),所以需要定义几个相关的资源,如下所示:
Window.Resources Times New Roman 18 Bold /Window.Resources
上面的标记为窗口添加了三个资源:第一个资源是 FontFamily 对象,该资源包含希望使用 的 字 体 名 称 ; 第 二 个 资 源 是 存 储 数 字 18 的 double 对 象 ; 第 三 个 资 源 是 一 个 枚 举 值 FontWeight.Bold。假定已经将.NET 名称空间系统映射到 XAML 名称空间前缀,如下所示:
Window xmlns:sys=clr-namespace:System;assembly=mscorlib ……
提示: 当使用资源设置属性时,正确匹配属性类型是非常重要的。这时 WPF 使用类型转换器的 方式和直接设置一个特性值是不同的。例如,如果正在为元素设置 FontFamily 特性,可以使用 字符串“Times New Roman” ,因为 FontFamilyConverter 转换器会创建所需要的 FontFamily 对 象。但如果试图使用字符串资源设置 FontFamily 属性,情况就不同了—— 这时,XAML 解析器 会抛出一个异常。 一旦定义了所需要的资源,下一步是在元素中实际使用这些资源。因为在整个应用程序的 生命周期中,这些资源永远不会发生变化,所以使用静态资源比较合理,如下所示:
A Customized Button
这个示例可以工作,并
文档评论(0)