【原文地址】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 来显示列表数据》。
(翻译:木野狐)
分享到:
相关推荐
· 第四部分:使用 Style 元素更好地封装观感 (木野狐译) · 第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译) · 第六部分:使用用户控件实现主从表场景 · 第七部分:使用控件模板定制控件的...
当野狐围棋在Windows 7上运行时,如果缺少这些DLL,表明该程序可能是在使用Visual C++ 2010编译器开发的,并且没有正确地打包或安装所需的运行时环境。解决这个问题通常有以下几种方法: 1. 安装Visual C++ ...
围棋对弈软件,版本为7, 很厉害的, 可以选择不段数进行对弈,水平可以达到专业水平,业余的都赢不到它; 解压就可以直接用
Live555 源代码分析 之 mediaServer RTSP服务器 作者:灯下野狐 有幸下载到资源,共享给大家。 因为我之前下载好多源码解释 资源分最多达15分都被坑。 这把力荐。
### 《Thinking in Java》第四版重要知识点概览 #### 第1章 对象入门 - **对象的概念**:介绍面向对象编程的基本概念,包括对象、类、实例等。 - **创建对象**:详解如何在Java中创建对象,包括使用`new`关键字。 -...
《搜神记》的故事基于中国的上古传说,传说中的神话人物,如神农氏、黄帝、蚩尤、西王母等尽数登场,这些人物的出现让读者可以更好地理解和体验中国的文化和历史。 《搜神记》的出现也代表着中国本土奇幻的希望,...
Live555的RTSP客户端代码主要集中在testRTSPClient.cpp文件中,这篇文章将对这部分代码进行深入分析。 首先,我们需要了解几个全局变量。其中chareventLoopWatchVariable=0是一个用于监控事件循环的变量。接下来是...
4. 文言文断句技巧:断句时要考虑文意、句式、修辞和结构,如“为……所……”的被动句式,名词性短语作主语,以及动词、状语的位置等。 5. 古代官职与历史人物:文中提到的人物如杨再思、桓彦范、张易之、武三思等...
其他如野狐、野狼、野猫、野兔、骆驼和羊也可能成为传染源。 - **传播途径**: - 腺鼠疫:通过鼠蚤叮咬传播。 - 肺鼠疫:通过飞沫传播。 ### 鼠疫的临床类型与潜伏期 - **类型分类**: - 轻型鼠疫 - 腺鼠疫 - ...
- **线路一**:从北京出发,通过G6京藏高速,经过太师庄互通转X石高速,野狐岭出口驶出进入207国道,直达草原天路东线西入口(黄花坪)和西线东入口。 - **线路二**:同G6京藏高速,但转X承高速崇礼方向,崇礼北...
- 注重第二课堂的拓展,提供丰富的课外活动,包括体育、美术、舞蹈、器乐、科技等领域。 - 教学质量在全县处于领先地位。 **1.4 原东大街小学情况** - **建立时间**:1952年。 - **占地面积**:3.8亩。 - **存在...
《ERP采集系统Curry7中文操作手册》是一份关于如何使用Curry7软件进行脑电图(EEG)数据采集、分析和处理的详细指南。Curry7是一款用于脑电波数据采集、分析和呈现的ERP(事件相关电位)处理软件,广泛应用于心理学、...
- 在疫源地附近设置救援人员驻扎地时,需远离动物栖息地,并做好防鼠防蚤工作。 - 不接触不明原因死亡的动物。 - 出现疑似症状时,应及时就医并向防疫机构报告。 - 在非疫情区域,一般不需要采取特殊的预防措施...
- 星位与四角:开局时,常见的落子点是星位(棋盘上的黑点),通常从中心的星位开始,形成对角线的布局。 - 定式:围棋开局有众多定式,即经过历史验证的开局手法,帮助玩家快速形成有利局面。 - 攻防转换:围棋...
日本兵的入侵打破了野狐峪的宁静,雪儿被烙上火印,象征着侵略者的烙印和屈辱。尽管如此,雪儿和坡娃都在逆境中展现了坚韧不屈的精神,彰显了人性的光辉。 3. **尊严与自我认同**: - 雪儿在故事中并非简单的动物...
- 野狐沟小流域位于**省**市**县,总面积71.4平方公里,是泾河的三级支流,属于黄土丘陵沟壑区,水土流失严重。 - 2005年,为了解决水土流失、人畜饮水和灌溉问题,**县水保局委托**市欣荣水保生态工程设计进行淤...
2016年AlphaGo以4比1的总比分大胜世界冠军李世石,此后更化身master现身野狐,横扫人类顶尖高手,未逢敌手。小虫象棋团队充分借鉴了AlphaGo的论文,在深度学习专家3DChess作者的推动下,建立了基于深度学习的参数...
Pachi的实力相当可观,其水平大约相当于野狐围棋平台上的3到6段,这在人工智能围棋软件中已经是一个相当高的水平。 Pachi的核心算法是蒙特卡洛树搜索(MCTS),这是一种在强化学习领域广泛应用的方法。蒙特卡洛树...