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 元素的背景。
返回页首
使用的画笔
SimpleCheckBox 模板使用 SimpleStyles.xaml 资源字典中的下列画笔资源:
使用下列画笔资源设置 Border 元素的“Background”属性:在未激活任何触发器时使用“NormalBrush”;在“IsMouseOver”为“True”时使用“MouseOverBrush”;在“IsPressed”为“True”时使用“PressedBrush”;在“IsEnabled”为“False”时使用“DisabledBackgroundBrush”。
使用下列画笔资源设置“BorderBrush”属性:在未激活任何触发器时使用“NormalBorderBrush”;在“IsPressed”为“True”时使用“PressedBorderBrush”;在“IsEnabled”为“False”时使用“DisabledBorderBrush”。
在“IsEnabled”为“False”时,使用“DisabledForegroundBrush”设置“Foreground”属性。
CheckMark 元素的“Stroke”属性使用“GlyphBrush”绘制“x”标记。
返回页首
最佳实用技巧和设计准则
如果希望应用程序用户界面 (UI) 的设计人员能够向控件中添加更多可视元素,通常可将网格控件用作模板的根元素。Expression Blend 会查找网格控件等版式面板,并且默认将其激活,从而使添加到美工板上的新元素最终成为该版式面板的子元素。
复选框的内容由 ContentPresenter 元素显示。ContentPresenter 元素自动将模板绑定到应用该模板的控件的“Content”属性。复选框必须具有此元素,才能显示来自模板中父元素的内容。
在某些情况下,所使用的控件没有足够的属性可绑定到控件模板中的属性。例如,CheckBox 控件未提供属性以设置 CheckMark 元素的画笔。在这种情况下,CheckMark 的笔划将设置为某种画笔,使其更易于更改。可以基于 CheckBox 控件创建自定义类并添加更多要绑定的属性,也可以绑定到某个现有的属性。有关自定义类的示例,请参阅本用户指南中的动手试验:创建自定义 WPF 控件。
因为需要隐藏和显示 CheckMark 路径元素,所以网格元素的大小是固定的。如果网格元素的大小不是固定的,则在所做的复选框选择改变时 ContentPresenter 中的文本会移动。除了使用固定的网格大小并隐藏 CheckMark 路径以外,还可以将 CheckMark 路径对象的“Stroke”属性的“Opacity”更改为 0。
返回页首