`

Silverlight教程第四部分:使用 Style 元素更好地封装观感 (木野狐译)

阅读更多

【原文地址】Silverlight Tutorial Part 4: Using Style Elements to Better Encapsulate Look and Feel
【原文发表日期】 Friday, February 22, 2008 5:53 AM

这是8个系列教程的第4部分,这个系列示范如何使用 Silverlight 2 的 Beta1 版本来创建一个简单的 Digg 客户端应用。这些教程请依次阅读,将有助于您理解 Silverlight 的一些核心编程概念。

使用 Style 元素更好地封装观感(Look and Feel)

WPF 和 Silverlight 支持一种 Style 机制,它允许我们把控件的属性值封装成可重用的资源。我们可以把这些样式声明保存在独立于页面的其他文件中,然后就可以在一个应用程序中跨控件和页面重用 (甚至跨多个应用程序重用)。在做一些基本定制的场景下,概念上类似于在 HTML 中重用 CSS.

注:除了定义基本属性设置(Color, Font, Size, Margins 等),WPF 和 Silverlight 里的样式还可以被用来定义和重用控件模板(Control Templates) - 控件模板可以带来超级丰富的皮肤功能,以及改变控件结构的功能(并支持目前 HTML 中的 CSS 做不到的定制场景)。我会在这个系列的第7部分讨论控件模板。

对我们的 Digg 例程而言,我们会在项目的 App.xaml 文件中定义样式。这使得该样式可以在整个应用程序中,被跨页面、跨控件地重用:

首先让我们来为 Digg 页面的 <Border>控件(以及其中的<TextBlock> 标题)封装样式:

我们可以在 App.xaml 文件中,用下列标签来创建两个 Style 元素,分别封装 <Border> 和 <TextBlock> 的设置信息,这些设置在前面是内联定义的:

注意上述代码中,我们是如何为每个 Style 元素赋予一个唯一的 "Key" 值的。接下来我们就可以更新我们的 <Border>> 和 <TextBlock> 控件,让它们用这些 keys 来引用对应的样式定义。我们会使用一种叫做“标签扩展”(markup extensions) 的 XAML 特性来完成它。标签扩展用于非字面量的值需要被设置时(另一个适用场景是绑定表达式)。

我们还可以对 Page.xaml 文件中的其它控件也做类似的分离样式的处理,这样做之后,文件内容会变成类似这样:

用这种方式封装样式设定,可以让开发者更好的关注应用程序的行为语义,并且还可以让我们跨控件/页面的重用样式。

注:Beta1 中需要注意的一个问题是,当你输错样式名称和属性定义时,其错误信息不是很清楚(它会引发异常,但不告诉哪里设置不对)。这会在 Beta2 中得到改进。同时,如果你在加载样式时看到错误消息,请一定仔细查看拼写错误。

下一步

现在我们已经通过 Style 引用,将 Page.xaml 文件中的标签进行了一定的清理。让我们更进一步来自定义我们的故事数据的外观。

您可以跳到下一篇教程以了解具体方法: 《使用 ListBox 和 Databinding 来显示列表数据》。

 

(翻译:木野狐

分享到:
评论

相关推荐

    Silverlight教程

    · 第四部分:使用 Style 元素更好地封装观感 (木野狐译) · 第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译) · 第六部分:使用用户控件实现主从表场景 · 第七部分:使用控件模板定制控件的...

    野狐围棋官方网站

    围棋对弈软件,版本为7, 很厉害的, 可以选择不段数进行对弈,水平可以达到专业水平,业余的都赢不到它; 解压就可以直接用

    野狐围棋win7缺乏的dll库

    国内著名的野狐围棋客户端,缺少的dll库 mfc100ud.dll,msvc100d.dll,msvcp100d.dll

    浅埋大跨连拱隧道结构稳定性有限元分析

    通过数值模拟手段对野狐岭二号浅埋、大跨连拱隧道进行结构力学分析,系统地研究了施工方案中应力变化情况和各开挖阶段围岩的稳定性。研究表明:三导洞法设计方案在施工过程中的围岩变形相对较小,应力状态良好,能避免在...

    Live555 源代码分析 之 mediaServer RTSP服务器 pdf 详解 作者灯下野狐

    Live555 源代码分析 之 mediaServer RTSP服务器 作者:灯下野狐 有幸下载到资源,共享给大家。 因为我之前下载好多源码解释 资源分最多达15分都被坑。 这把力荐。

    curry7 操作文档.pdf

    ERP采集系统curry7中文操作手册

    象棋小虫版.rar小虫象棋2010年版本

    2016年AlphaGo以4比1的总比分大胜世界冠军李世石,此后更化身master现身野狐,横扫人类顶尖高手,未逢敌手。小虫象棋团队充分借鉴了AlphaGo的论文,在深度学习专家3DChess作者的推动下,建立了基于深度学习的参数...

    Live555源码分析RTSP客户端

    Live555源代码分析之RTSP客户端...Author: 灯下野狐 E-mail: dengxiayehu@yeah.net Date : 2012-02 PS : 欢迎交流,转载请务必注明出处。 以 testRTSPClient.cpp 为例,介绍 Live555 中 RTSP 客户端的处理。

    围棋pachi软件,exe

    围棋pachi软件,可以安装包,也可以采用命令行模式进行下棋,水平大概在野狐3-6段。采用mcts,深度学习

    浅埋大跨连拱隧道结构稳定性有限元分析 (2010年)

    通过数值模拟手段对野狐岭二号浅埋、大跨连拱隧道进行结构力学分析,系统地研究了施工方案中应力变化情况和各开挖阶段围岩的稳定性。研究表明:三导洞法设计方案在施工过程中的围岩变形相对较小,应力状态良好,能...

    Leela0110.exe给jdricky

    此文件专门给野狐围棋用户名jdricky的。第二个文件叫zenith免费送。闲人勿扰。再送一个叫思佳围棋较弱的人工智能软件。

    改进版win人机对战围棋

    改进了先前版本的一些错误,可以在野狐围棋和别人对战,棋力一级没问题。 对学围棋应该有一些帮助。 非源代码,源代码都在博客上了。

    TensorFlow与主流深度学习框架对比

    引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平台上横扫中日韩围棋高手,取得60连胜,未尝败绩。AlphaGo背后神秘的推动力就是TensorFlow——Google于2015年11月开源的机器学习及深度学习框架。TensorFlow在...

    Thinking in Java Fourth Edition

    第4 章 初始化和清除 第5 章 隐藏实施过程 第6 章 类再生 第7 章 多形性 第8 章 对象的容纳 第9 章 违例差错控制 第10 章 JAVA IO 系统 第11 章 运行期类型鉴定 第12 章 传递和返回对象 第十三章 创建窗口和程序片 ...

    CentOS7 MariaDB10(MySql)相关安装配置

    初学,搭建相关环境,使用同样的初学者。 以下是目录结构: 一、 基础准备 4 1. 环境说明 4 2. 基础知识准备 4 二、 安装操作 5 1. 配置源 5 2. 安装 7 3. 完成配置 7 4. HeidiSql 8 三、 MariaDB操作 11 1、 编码...

    IIC通信总结

    I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。

    Thinking In Java》中文版

    这本是中文版的。。 此书适合各类人群,学通此书,java无任何疑问

    windows API大全

    有关于windows API的资料 ,程序员常备工具

Global site tag (gtag.js) - Google Analytics