.png)
按钮是一种用于响应 Click 事件的“内容控件” ** 。在 Microsoft Expression Blend 中,可以通过双击按钮并在其中绘制对象,从而在按钮中放入内容。如果希望在按钮中放入多个对象,则需要先添加一个版式面板(如 Grid 或 Canvas )。默认情况下,按钮也可以显示文本;右键单击按钮,然后单击“编辑文本”,即可编辑文本。
SimpleButton 控件的美工板视图
.png)
控件模板的分类详解
SimpleButton 控件模板由下列项组成:
Grid 版式面板 用于在按钮内存放多个子对象。同时,使用 Grid 也是为了便于您向模板中添加更多对象。例如,如果根对象是 Border 并且用户尝试添加另一对象,则由于 Border 只能包含一个子对象,因此该对象将取代 ContentPresenter 对象。
Border 对象 使用此对象是因为它包含一个 BorderThickness 属性,该属性可以用模板绑定到应用此模板的按钮控件的 BorderThickness 属性。
ContentPresenter 用于显示应用了模板的按钮的 Content 属性。必须存在此对象,才能显示按钮的内容。
使用的属性触发器
控件模板中的属性触发器可用于使控件响应属性改变。可以在“触发器”面板中单击各项,以查看在触发器处于活动状态时更改的属性。例如,在 SimpleButton 模板中,当 IsMouseOver 属性变为 True 时, Border 对象的背景颜色将变为 MouseOverBrush 资源。
使用的画笔
SimpleButton 模板使用 SimpleStyles.xaml 资源字典中的下列画笔资源:
使用下列画笔资源设置 Background 属性:在未激活任何触发器时使用 NormalBrush ,在 IsMouseOver 为 True 时使用 MouseOverBrush ,在 IsPressed 为 True 时使用 PressedBrush ,以及在 IsEnabled 为 False 时使用 DisabledBackgroundBrush 。
使用下列画笔资源设置 Border 属性:在未激活任何触发器时使用 NormalBorderBrush ,在 IsKeyboardFocused 为 True 时使用 DefaultBorderBrush ,在 IsPressed 为 True 时使用 PressedBorderBrush ,以及在 IsEnabled 为 False 时使用 DisabledBorderBrush 。
在 IsEnabled 为 False 时,使用 DisabledForegroundBrush 设置 Foreground 属性。
最佳实用技巧和设计准则
一般来说,如果希望设计人员能够向控件添加更多可视元素,则可将 Grid 控件用作模板的根元素。Expression Blend 会查找 Grid 控件等版式面板,并且默认将其激活,从而使添加到美工板上的新对象最终成为该版式面板的子对象。
属性触发器用于根据用户的操作(如单击按钮)来更改控件的外观。建议优先使用属性触发器,再考虑使用事件触发器,因为需要使用两个事件触发器(例如,分别对应 MouseDown 和 MouseUp 事件)才能完成一个属性触发器(例如,对应 IsPressed 状态)所能完成的任务。但是,事件触发器可用于开始运行动画时间线,以实现更复杂的控制。
通常,需要对 IsMouseOver 、 IsPressed 和 IsEnabled ( False ) 状态设置画笔或视觉效果变化。此外,可以使用通常用于在控件周围显示虚线的 IsKeyboardFocused 状态。
另请参阅
任务
动手试验:使用效果设置按钮样式
动手试验:向按钮添加动画
动手试验:创建变换按钮
Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。