SimpleExpander

此页仅适用于 WPF 项目

展开器是一种可显示标题和可折叠窗口(用于显示内容)的带标题内容控件。在 Microsoft Expression Blend 中,可以通过修改“Header”属性来设置展开器的标题。可通过双击展开器并在其中绘制元素,在该展开器中放入内容。如果希望在该展开器中放入多个元素,则需要先添加一个版式面板(如网格或画布)。默认情况下,展开器也可以显示文本;右键单击展开器,然后单击“编辑文本”,即可编辑文本。若要在美工板上查看展开的展开器,可以在“对象和时间线”下右键单击展开器,然后单击“展开 Expander”。

SimpleExpander 控件的美工板视图

Cc294637.c43eef70-9797-41b2-af94-b3470f88c6c6(zh-cn,Expression.10).png

控件模板的分类详解

SimpleExpander 控件模板由下列项组成:

  • 网格:需要此版式面板来在展开器中存放多个子元素。同时,使用网格也是为了便于应用程序用户界面 (UI) 的设计人员向模板中添加更多元素。网格分为两个区域:用于显示标题的 Border 区域和用于显示内容的 ExpandSite 区域。

  • Border 元素:使用此元素是因为它包含一个“BorderThickness”属性,该属性可以用模板绑定到应用此模板的展开器控件的“BorderThickness”属性。

  • ToggleButton 元素:此元素包含在 Border 元素中,用于展开和折叠展开器。

  • ContentPresenter 元素:此元素包含在 Border 元素中,并会自动绑定到应用此模板的展开器控件的“Header”属性。

  • ExpandSite 区域下的 ContentPresenter:用于显示应用此模板的展开器的“Content”属性。必须同时存在这两个 ContentPresenter 元素,展开器才能按预期工作。

    对象视图:SimpleExpander 控件的基本部件(模板)

    Cc294637.ef0a93de-baf6-4563-9b58-ba0f5a703450(zh-cn,Expression.10).png

Cc294637.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首

使用的属性触发器

控件模板中的属性触发器可用于使控件响应属性改变。可以在“交互”面板中的“触发器”下单击各项,以查看在激活触发器时更改的属性。例如,在 SimpleExpander 模板中,当“IsExpanded”属性变为“True”时,ExpandSite 区域变为可见。

Cc294637.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首

使用的画笔

SimpleExpander 模板使用 SimpleStyles.xaml 资源字典中的下列画笔资源:

  • 在未激活任何触发器时使用“LightBrush”设置“Background”属性,在“IsEnabled”为“False”时,使用“DisabledBackgroundBrush”进行设置。

  • 在未激活任何触发器时使用“NormalBorderBrush”设置“BorderBrush”属性,在“IsEnabled”为“False”时使用“DisabledBorderBrush”进行设置。

  • 在未激活任何触发器时使用“NormalBrush”设置 Border 元素的“Background”属性。

  • 在未激活任何触发器时使用“WindowBackgroundBrush”设置 ExpandSite 元素的“Background”属性。

  • 在未激活任何触发器时使用“SolidBorderBrush”设置 ExpandSite 元素的“BorderBrush”属性。

  • 在“IsEnabled”为“False”时,使用“DisabledForegroundBrush”设置“Foreground”属性。

Cc294637.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首

最佳实用技巧和设计准则

  • 如果希望设计人员能够向控件中添加更多可视元素,通常可将网格控件用作模板的根元素。Expression Blend 会查找网格控件等版式面板,并且默认将其激活,从而使添加到美工板上的新元素最终成为该版式面板的子元素。

  • 由于展开器有两个 ContentPresenter 元素(一个用于标题,另一个用于内容),因此需要将标题中的 ContentPresenter 显式设置为该控件的类。若要执行此操作,请将 ContentPresenter 元素(位于模板的 Border 节点中)的“ContentSource”属性设置为“Header”。

  • ToggleButton 元素使用名为“ExpanderToggleButton”的单独模板。若要修改此模板,请右键单击“ToggleButton”元素,指向“编辑控件部件(模板)”,然后单击“编辑模板”或“编辑副本”。通过将 ToggleButton 的“IsChecked”绑定到展开器的“IsExpanded”,可以将 ToggleButton 与展开器的其余部分关联起来。为了能够正确更新此属性,需要保留此绑定,这种双向绑定使用户能够通过编程方式展开展开器。

  • 默认情况下,ExpandSite 区域处于折叠状态,并且通过触发器显示出来。由于触发器通过名称引用 ExpandSite 元素,因此如果更改或替换 ExpandSite 元素,还必须同时更新 IsExpanded 触发器。

Cc294637.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首