設定支援範本之控制項的樣式
您可以建立及修改控制項範本和樣式,自訂 Windows Presentation Foundation (WPF) 和 Microsoft Silverlight 控制項。這會使應用程式產生獨特且一致的外觀。
範本及樣式可分別定義控制項的組成部分,以及控制項的行為。您無法修改系統樣式及範本,因此請務必製作控制項的預設系統樣式及範本複本,以便建立範本及樣式。只要修改範本及樣式即可在 Microsoft Expression Blend 的 [設計] 檢視中輕鬆製作新的控制項,並不需要使用程式碼。
樣式及範本之間的差異
下表提供樣式及範本的詳細比較,協助您決定是否要修改控制項的樣式或範本,或是同時修改兩者:
特性 |
樣式 |
範本 |
---|---|---|
用途 |
您可以使用樣式,修改套用樣式控制項上所設定的屬性預設值。例如,您可以指定控制項 (如按鈕) 背景、框線及前景的預設色彩。 在畫板上繪製控制項時,於該控制項上設定的值可以覆寫這些樣式屬性。例如,如果將按鈕樣式的背景色彩設定為藍色,則在畫板上繪製按鈕時,按鈕會顯示為藍色,但是您可以變更此色彩。 您只能設定樣式中已存在的屬性。例如,如果屬性是屬於新增至範本的新組件,就無法設定該屬性的預設值。 最後,您可以使用樣式來指定控制項的預設行為。例如,在按鈕的樣式中,您可以指定觸發程序,在使用者將滑鼠指標移至該按鈕上方時變更背景色彩。這些屬性變更是即時性的,而不是逐漸地以動畫效果呈現。 |
您可以使用範本,修改控制項 (已套用範本) 的結構。您可以修改控制項範本,以重新排列、新增或刪除控制項中的元素 (或組件)。例如,您可以新增控制項 (如按鈕) 的背景影像或設計。 您也可以修改套用範本之控制項上所設定的屬性值 (如背景色彩)。在畫板上繪製控制項時,於該控制項上設定的值無法覆寫這些範本值。不過,在畫板上繪製控制項時,您可以使用範本繫結以根據控制項的屬性值來設定範本的屬性。 當您修改範本時,可存取的控制項組件數目,會比修改樣式時可存取的控制項組件數目要來得多。例如,您可以變更下拉式方塊中快顯清單的顯示方式,或修改項目範本,以變更會觸發下拉式方塊中快顯清單之按鈕的外觀。有些範本由下列組件所構成:
最後,您可以使用觸發程序,指定範本內任何新及現有部分的行為。例如,您可以指定觸發程序,在使用者將滑鼠指標移至按鈕上方時,變更其中一個部分的色彩。這些屬性變更可以是瞬間或是以動畫效果呈現,以產生平滑切換。
注意事項:
您不可以將範本繫結屬性值或色彩資源值,以動畫效果顯示為另一個值。在觸發程序中使用動畫時,請使用特定的屬性值。
|
如何編輯 |
您可以透過下列方式進入樣式的編輯模式: 使用功能表
如果控制項已套用系統樣式,就無法使用 [編輯樣式] 選項。 如需範例,請參閱建立樣式。 使用資源面板 (以修改現有樣式)
注意事項:
樣式及範本都是資源,可以用不同方式套用至控制項,以及儲存在應用程式中的不同位置。如需建立樣式的範例,請參閱建立樣式。
|
您可以透過下列方式進入控制項範本的編輯模式: 使用功能表
使用資源面板 (以修改現有範本)
秘訣:
控制項範本是包裝在樣式內,因此套用至控制項的樣式,會同時包括控制項的外觀 (組件) 及行為。由於樣式複本包括範本,因此才會按一下 [編輯目前],而不是 [編輯複本]。由於按一下按鈕,只會將您帶回樣式的編輯模式,因此若要回到主文件的編輯範圍,必須按兩次 [將範圍傳回] 。
注意事項:
樣式及範本都是資源,可以用不同方式套用至控制項,以及儲存在應用程式中的不同位置。如需建立範本的範例,請參閱建立或修改範本。
|
如何套用 |
您可以透過下列方式將現有樣式套用至畫板上的控制項: 使用功能表
使用資產面板在畫板上繪製具有樣式的控制項
|
您可以透過下列方式,將現有範本套用至畫板上的控制項: 使用功能表
使用資產面板在畫板上繪製具有範本的控制項 範本是包含在樣式中。若要將範本套用至畫板上的控制項,請使用與套用樣式相同的方法。 |
Expression Blend 包含在 WPF 專案的資源字典中所內含的一組簡單樣式及範本。您可以使用資源字典設計應用程式的主題。如需詳細資訊,請參閱本主題稍後的<簡單樣式和資源字典>一節。
修改樣式及範本
當您位於 Expression Blend 中某個樣式或範本的編輯範圍時,階層連結導覽列會出現在畫板的左上方。
已選取範本編輯模式的階層連結列
您可以按一下階層連結列上的按鈕,快速在範本編輯模式、樣式編輯模式及選取物件的物件編輯範圍之間移動。任何套用自訂樣式或範本的所選物件,都會出現階層連結列。
如需有關如何修改樣式或範本的詳細資訊,請參閱編輯樣式和建立或修改範本。
最佳作法
當您修改樣式或範本時,請確定採用下列最佳作法:
除非只是變更色彩筆刷,否則請避免變更現有的觸發程序。
請勿重新命名或修改任何名稱開頭為 "PART_" 的元素,因為執行控制項的程式碼會參照這些元素。
請勿移除任何協助程式元素,例如 [SimpleTabControl] 中的 [TabPanel],或 [SimpleScrollBar] 中的 [Track]。這些元素必須存在,才能保留控制項的功能。
請勿在 [屬性] 面板中重設或變更任何繫結。這些繫結會以屬性周圍的黃色反白顯示,或以黃色的 [進階屬性選項] 按鈕表示。可使用範本繫結,將範本中的屬性繫結至套用範本控制項的屬性。
如果範本包含展示框元素 (例如 [ContentPresenter] 或 [ItemsPresenter] 元素),請務必在範本中保留此元素。展示框元素會顯示套用範本之控制項中定義的內容。
警告: |
---|
在修改樣式及範本時,為了不破壞套用樣式或範本之系統控制項的功能,需要注意這些重點。 |
佈景主題
主題是產生使用者介面控制項一致外觀的一組樣式及範本。例如,WPF 會將某個主題用於在 Windows XP 上執行的 WPF 應用程式,而將另一個主題用於在 Windows Vista 上執行的 WPF 應用程式。這就是這兩個作業系統上的相同按鈕外觀不同之原因。
為了決定控制項 (如按鈕) 的外觀,應用程式會搜尋下列位置:
控制項上設定的屬性:例如,如果您在 Expression Blend 中建立按鈕,然後直接在按鈕上變更背景色彩。如果直接在控制項上設定屬性,將會覆寫該屬性在其他位置設定的任意值。
控制項所用之自訂樣式或範本中設定的屬性:例如,如果您在 Expression Blend 中建立按鈕,然後修改範本複本以在範本中設定背景色彩。如果按鈕上未直接設定背景屬性,此背景色彩就是按鈕使用的背景色彩。您可以定義含有控制項之文件中的資源,也可以在應用程式層級定義資源 (讓資源適用於應用程式中的所有文件)。而文件層級資源會覆寫應用程式層級資源。
控制項所用之系統範本上設定的屬性:WPF 會根據主題決定系統範本 (換句話說,就是根據作業系統來決定系統範本)。
簡單樣式和資源字典
注意事項: |
---|
Silverlight 專案不支援簡單樣式。 |
您可以在名為資源字典的個別檔案中建立屬性、樣式及範本資源,有效地建立主題。資源字典可讓您跨多個應用程式重複使用主題。您也可定義提供相同類型的資源但具不同值的多個資源字典,建立可切換的主題。例如,Expression Blend 應用程式本身會將不同的資源字典用於「陰暗」主題及「明亮」主題,切換方式是按一下 [工具] 功能表上的 [選項],然後變更 [工作區] 的 [主題]。
如果是您自己的應用程式,則 Expression Blend 提供可立即使用的資源字典 SimpleStyles.xaml,內含一般控制項 (如按鈕、清單方塊及其他項目) 適用的一組樣式。您可以在 [資產] 面板之 [樣式] 類別中的 [簡單樣式] 下存取這些樣式。當您使用其中一個簡單樣式 (Simple Styles) 在畫板上繪製控制項時,會同時建立控制項的系統版本,並套用簡單樣式 (Simple Styles)。例如,如果在畫板上建立系統 [Button],則所產生的可延伸應用程式標記語言 (XAML) 如下:
<Button Content="Button" ... />
如果在畫板上建立 [SimpleButton],則產生的 XAML 會包括 [SimpleButton] 樣式的參照:
<Button Content="Button" Style="{DynamicResource SimpleButton}" ... />
將簡單樣式 (Simple Styles) 控制項新增至畫板之後,SimpleStyles.xaml 資源字典檔案就會新增至專案中,並連結至 app.xaml 檔案,這樣一來,樣式就會定義在應用程式的範圍中。您可以在 [資源] 面板中檢視所有的樣式。
如需有關如何管理資源的詳細資訊,請參閱建立可重複使用的資源。