狂淘

          www.kuangtao.net

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks

          這是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 來顯示列表數據》。

          posted on 2009-10-03 13:37 狂淘 閱讀(181) 評論(0)  編輯  收藏 所屬分類: SilverLight
          主站蜘蛛池模板: 旌德县| 义乌市| 科技| 资源县| 青浦区| 宿州市| 祁门县| 志丹县| 曲阳县| 高密市| 福贡县| 丰镇市| 高淳县| 开化县| 明水县| 聊城市| 绩溪县| 安化县| 洪湖市| 麻城市| 梁山县| 阿拉善左旗| 凤庆县| 曲水县| 新邵县| 商丘市| 福安市| 奈曼旗| 牟定县| 武平县| 邯郸县| 阳江市| 昌图县| 贞丰县| 涡阳县| 兴安县| 屏东县| 巨野县| 九寨沟县| 鸡泽县| 聊城市|