style和template的區別

2021-05-21 19:44:06 字數 1548 閱讀 4885

[原文**:http://blogs.msdn.com/jaimer/archive/2008/04/08/built-in-styling-and-generic-xaml.aspx]

複製內容到剪貼簿

**:public class gelbutton : button

足夠簡單, 現在我們想在page.xaml裡使用它, 我們在頁面裡增加了namespace和這個控制項的定義.

複製內容到剪貼簿

**:

看到下面的結果你會感到驚奇嗎?

我不能告訴你你應該感到驚訝或不驚訝,但我可以告訴你發生了什麼!

控制項預設是無外觀的, 你需要給它定義外觀. 這是通過給控制項指定乙個合法的控制項模板來完成的[通過control類的template屬性]

要指定這個模板屬性的話, 你可以像下面這麼做:

複製內容到剪貼簿

**:public gelbutton ()

但是乙個更好的方式是把控制項模板的定義儲存在乙個叫"generic.xaml"的資源檔案(resource dictionary), 然後神奇的執行時會把這個檔案自動載入上. 你的模板會通過targettype 屬性關聯到你的控制項上.  這個模板將成為我們所稱的「內建樣式」(「built-in style」)。      這裡有些建立內建樣式的細節.

generic.xaml是乙個包含在你程式集裡的資源字典檔案. 預設的generic.xaml看上去應該這樣:

複製內容到剪貼簿

**:

複製內容到剪貼簿

**:

讓我們剖析需要建立該模板的工作:

1. 增加乙個xmlns:samples到資源字典裡.

2. 下一步我們定義樣式並且設定我們想要使用這個樣式的目標控制項型別(targettype); 通常你在定義樣式時設定目標型別是為了你的模板能發現屬性和使他們生效, 但是當在generic.xaml裡做這個設定的時候, 神奇的事情是通過這個宣告資訊把樣式和目標控制項型別建立關聯; 現在一旦當控制項被例項化後, 如果沒有其他樣式被使用, 這個樣式會被當作為預設樣式.

3. 剩下的是簡單的樣式定義. 模板繫結(templatebinding) 可能是最有意思的部分, 這會建立乙個在我們設定的屬性和實際控制項屬性的繫結. 舉例來說: 

建立了乙個繫結,把 content presenter的foreground屬性和實際控制項的foreground屬性聯絡起來. 

這可以讓我們在設計工具裡更容易定義使用者介面樣式. 在blend或是xaml**裡你可以宣告乙個按鈕 或是

更多資訊你可以看看karen corby的 mix presentation on 「rich,dynamic uis」.

現在我們可以執行上面相同的**, 只是更改了一下資源字典裡的樣式:

既然我已經對background和foreground建立了乙個模板繫結(templatebinding ), 我可以更進一步

複製內容到剪貼簿

**:

Android 中的Theme和Style使用

android 中的theme和style使用,還是比較簡單的。1 首先在res values styles.xml的resource中定義三個樣式,分別為 然後在res layout檔案下的activity main.xml中的控制項中引用剛才定義的style。android id id text...

Style 風格 和 Theme 主題

當你設計你的程式的時候,你可以用style 風格 和theme 主題 來統一格式化各種螢幕和ui元素。風格是乙個包含一種或者多種格式化屬性的集合,你可以將其用為乙個單位用在布局xml單個元素當中。比如,你可以定義一種風格來定義字型大小大小和顏色,然後將其用在view元素的乙個特定的例項。主題是乙個包...

Style 風格 和 Theme 主題

當你設計你的程式的時候,你可以用style 風格 和theme 主題 來統一格式化各種螢幕和ui元素。風格是乙個包含一種或者多種格式化屬性的集合,你可以將其用為乙個單位用在布局xml單個元素當中。比如,你可以定義一種風格來定義字型大小大小和顏色,然後將其用在view元素的乙個特定的例項。主題是乙個包...