`

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 显示列表数据 (木野狐译) · 第六部分:使用用户控件实现主从表场景 · 第七部分:使用控件模板定制控件的...

    野狐围棋win7缺乏的dll库

    当野狐围棋在Windows 7上运行时,如果缺少这些DLL,表明该程序可能是在使用Visual C++ 2010编译器开发的,并且没有正确地打包或安装所需的运行时环境。解决这个问题通常有以下几种方法: 1. 安装Visual C++ ...

    野狐围棋官方网站

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

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

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

    Thinking in Java Fourth Edition

    ### 《Thinking in Java》第四版重要知识点概览 #### 第1章 对象入门 - **对象的概念**:介绍面向对象编程的基本概念,包括对象、类、实例等。 - **创建对象**:详解如何在Java中创建对象,包括使用`new`关键字。 -...

    初中语文文学讨论名著导读神话重塑造搜神记霸气不逊魔戒

    《搜神记》的故事基于中国的上古传说,传说中的神话人物,如神农氏、黄帝、蚩尤、西王母等尽数登场,这些人物的出现让读者可以更好地理解和体验中国的文化和历史。 《搜神记》的出现也代表着中国本土奇幻的希望,...

    Live555源码分析RTSP客户端

    Live555的RTSP客户端代码主要集中在testRTSPClient.cpp文件中,这篇文章将对这部分代码进行深入分析。 首先,我们需要了解几个全局变量。其中chareventLoopWatchVariable=0是一个用于监控事件循环的变量。接下来是...

    新课标2020高考语文二轮复习专题五文言文预读第1节文言文基础题:抓标志重积累课件

    4. 文言文断句技巧:断句时要考虑文意、句式、修辞和结构,如“为……所……”的被动句式,名词性短语作主语,以及动词、状语的位置等。 5. 古代官职与历史人物:文中提到的人物如杨再思、桓彦范、张易之、武三思等...

    鼠疫发病率传染率及鼠疫疫苗研究现状分析.docx

    其他如野狐、野狼、野猫、野兔、骆驼和羊也可能成为传染源。 - **传播途径**: - 腺鼠疫:通过鼠蚤叮咬传播。 - 肺鼠疫:通过飞沫传播。 ### 鼠疫的临床类型与潜伏期 - **类型分类**: - 轻型鼠疫 - 腺鼠疫 - ...

    北京到草原天路自驾游.doc

    - **线路一**:从北京出发,通过G6京藏高速,经过太师庄互通转X石高速,野狐岭出口驶出进入207国道,直达草原天路东线西入口(黄花坪)和西线东入口。 - **线路二**:同G6京藏高速,但转X承高速崇礼方向,崇礼北...

    XX县区师范路小学关于创建市级生态文化教育示范基地的创建报告 .docx

    - 注重第二课堂的拓展,提供丰富的课外活动,包括体育、美术、舞蹈、器乐、科技等领域。 - 教学质量在全县处于领先地位。 **1.4 原东大街小学情况** - **建立时间**:1952年。 - **占地面积**:3.8亩。 - **存在...

    curry7 操作文档.pdf

    《ERP采集系统Curry7中文操作手册》是一份关于如何使用Curry7软件进行脑电图(EEG)数据采集、分析和处理的详细指南。Curry7是一款用于脑电波数据采集、分析和呈现的ERP(事件相关电位)处理软件,广泛应用于心理学、...

    鼠疫防治基本知识定义.docx

    - 在疫源地附近设置救援人员驻扎地时,需远离动物栖息地,并做好防鼠防蚤工作。 - 不接触不明原因死亡的动物。 - 出现疑似症状时,应及时就医并向防疫机构报告。 - 在非疫情区域,一般不需要采取特殊的预防措施...

    weiqi.rar_weiqi

    - 星位与四角:开局时,常见的落子点是星位(棋盘上的黑点),通常从中心的星位开始,形成对角线的布局。 - 定式:围棋开局有众多定式,即经过历史验证的开局手法,帮助玩家快速形成有利局面。 - 攻防转换:围棋...

    小说《火印》的读书笔记范文_3.docx

    日本兵的入侵打破了野狐峪的宁静,雪儿被烙上火印,象征着侵略者的烙印和屈辱。尽管如此,雪儿和坡娃都在逆境中展现了坚韧不屈的精神,彰显了人性的光辉。 3. **尊严与自我认同**: - 雪儿在故事中并非简单的动物...

    张家洼骨干坝初步设计报告.doc

    - 野狐沟小流域位于**省**市**县,总面积71.4平方公里,是泾河的三级支流,属于黄土丘陵沟壑区,水土流失严重。 - 2005年,为了解决水土流失、人畜饮水和灌溉问题,**县水保局委托**市欣荣水保生态工程设计进行淤...

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

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

    围棋pachi软件,exe

    Pachi的实力相当可观,其水平大约相当于野狐围棋平台上的3到6段,这在人工智能围棋软件中已经是一个相当高的水平。 Pachi的核心算法是蒙特卡洛树搜索(MCTS),这是一种在强化学习领域广泛应用的方法。蒙特卡洛树...

Global site tag (gtag.js) - Google Analytics