.png)
此核取方塊是一種作為切換開關的內容控制項,可以有三種狀態:核取、未核取及不確定。 IsChecked 狀態指出是否已選取核取方塊。在 Microsoft Expression Blend 中,按兩下核取方塊並將物件拖曳至核取方塊中,就可以填入核取方塊的內容。若要在核取方塊中放置多個物件,則必須先新增版面配置面板 (例如 Grid 或 Canvas )。根據預設,核取方塊也可以顯示文字;若要編輯文字,您可以用滑鼠右鍵按一下核取方塊,然後按一下 [編輯文字]。
SimpleCheckBox 控制項的畫板檢視
.png)
深入控制項範本
SimpleCheckBox 控制項範本由下列項目組成:
BulletDecorator 容器 :用來對齊核取方塊與文字。 BulletDecorator 具有兩個子項目:項目符號和內容物件 (例如 ContentPresenter )。 BulletDecorator 可用於需要將文字對齊另一個物件的其他控制項 (例如 RadioButton )。
Bullet 元素 :包含 Grid 面板,此面板中又包含一個名為 CheckMark 的 Path 元素和一個 Border 元素。 Path 可用來繪製 "x" 記號。
ContentPresenter :用來顯示套用範本之核取方塊的 Content 屬性。此元素必須存在,才能顯示核取方塊的內容。
使用屬性觸發程序
控制項範本中的屬性觸發程序,可讓控制項回應屬性變更。您可以按一下 [觸發程序] 面板中的項目,檢視觸發程序啟用時變更的屬性。例如,在 SimpleCheckBox 範本中,當 IsChecked 屬性為 False 時, CheckMark 路徑元素的可見度會變更為 Collapsed 。在其他觸發程序中,您可以使用筆刷資源來變更 Border 元素的背景。
使用筆刷
在 SimpleStyles.xaml 資源字典中, SimpleCheckBox 範本會使用下列筆刷資源:
Border 元素的 Background 屬性是使用下列項目來設定: NormalBrush (當沒有任何作用中的觸發程序時)、 MouseOverBrush (當 IsMouseOver 為 True 時)、 PressedBrush (當 IsPressed 為 True 時) 和 DisabledBackgroundBrush (當 IsEnabled 為 False 時)。
BorderBrush 屬性是使用下列項目來設定: NormalBorderBrush (當沒有任何作用中的觸發程序時)、 PressedBorderBrush (當 IsPressed 為 True 時) 和 DisabledBorderBrush (當 IsEnabled 為 False 時)。
當 IsEnabled 為 False 時, Foreground 屬性是使用 DisabledForegroundBrush 來設定。
CheckMark 元素的 Stroke 屬性使用 GlyphBrush 來繪製 "x" 記號。
最佳作法與設計方針
一般而言,如果您希望應用程式使用者介面 (UI) 設計師在控制項上新增更多視覺元素,請使用 Grid 控制項作為範本的根。Expression Blend 會搜尋類似 Grid 控制項的版面配置面板,並將其設為預設啟用,讓新增至畫板的新物件成為版面配置面板的子物件。
核取方塊的內容是由 ContentPresenter 物件來顯示。 ContentPresenter 物件會自動將範本繫結至套用範本之控制項的 Content 屬性。此物件必須存在,核取方塊才能顯示範本化父項目的內容。
在某些情況下,您使用的控制項沒有足夠的屬性可供控制項範本來繫結。例如, CheckBox 控制項未提供屬性來設定 CheckMark 物件的筆刷。在這種情況下, CheckMark 的筆觸會設為更加容易變更的筆刷。您可以根據 CheckBox 控制項來建立自訂類別,然後新增更多可繫結的屬性,或繫結至其中一個現有的屬性。如需自訂類別的範例,請參閱本使用者指南中的試試看:建立含有自訂屬性的自訂控制項。
因為我們會隱藏和顯示 CheckMark 路徑物件,所以 Grid 物件為固定大小。如果 Grid 物件不是固定大小,則 ContentPresenter 中的文字會隨著核取方塊選項變更而移動。除了固定 Grid 大小和隱藏 CheckMark 路徑以外,另一種作法是在 CheckMark 路徑物件上將 Stroke 屬性的 Opacity 變更為 0 。
另請參閱
工作
試試看:自訂 SimpleCheckBox 中核取記號的外觀
Copyright © 2011 by Microsoft Corporation. All rights reserved.