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