.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 元素的背景。
使用的画笔
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) 设计人员能够向控件添加更多可视元素,则可将 Grid 控件用作模板的根元素。Expression Blend 会查找 Grid 控件等版式面板,并且默认将其激活,从而使添加到美工板上的新对象最终成为该版式面板的子对象。
复选框的内容由 ContentPresenter 对象显示。 ContentPresenter 对象自动将模板绑定到应用此模板的控件的 Content 属性。复选框必须具有此对象,才能显示来自模板中父对象的内容。
在某些情况下,所使用的控件没有足够的属性可绑定到控件模板中的属性。例如, CheckBox 控件未提供属性以设置 CheckMark 对象的画笔。在这种情况下, CheckMark 的笔划将设置为某种画笔,使其更易于更改。可以基于 CheckBox 控件创建自定义类并添加更多要绑定的属性,也可以绑定到某个现有的属性。有关自定义类的示例,请参阅本用户指南中的动手试验:创建具有自定义属性的自定义控件。
因为需要隐藏和显示 CheckMark 路径对象,所以 Grid 对象的大小是固定的。如果 Grid 对象的大小不是固定的,则在所做的复选框选择改变时 ContentPresenter 中的文本会移动。除了使用固定的 Grid 大小并隐藏 CheckMark 路径以外,还可以将 CheckMark 路径对象的 Stroke 属性的 Opacity 更改为 0 。
另请参阅
任务
动手试验:自定义 SimpleCheckBox 中复选标记的外观
Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。