SimpleComboBox 和 SimpleComboBoxItem

此页仅适用于 WPF 项目

组合框是一种下拉列表形式的项目控件。在 Microsoft Expression Blend 中,可以通过双击组合框并在其中绘制对象(例如 SimpleComboBoxItem ),从而在组合框中放入内容。或者,可以在“对象和时间线”面板中右键单击组合框,然后单击“添加 SimpleComboBoxItem”以向集合中添加单个项目,或者单击“将 ItemsSource 绑定到数据”以从数据源生成 ComboBoxItem 对象的集合。若要在美工板上查看展开的组合框,可以在“对象和时间线”面板中右键单击相应的组合框或组合框项,然后单击“展开 ComboBox”。

添加两项之后的 SimpleComboBox 控件的美工板视图

Cc295332.25309636-8547-4686-a578-9aa914190f01(zh-cn,Expression.40).png

控件模板的分类详解

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

  • Grid 面板 :用于在组合框中存放多个子元素。同时,使用 Grid 也是为了便于应用程序用户界面 (UI) 的设计人员向模板添加更多对象。

  • 名为 ContentSite ContentPresenter 元素:该元素包含在 Grid 中,用于显示选定项。

  • 名为 PART_EditableTextBox 的文本框:该文本框包含在 Grid 中,可让用户编辑组合框中的文本。由于类使用名称 PART_EditableTextBox 来查找该文本框,因此不应更改此名称。默认情况下,文本框处于折叠状态,并且在应用此控件模板的组合框的 IsEditable 设置为 True 时才可见。

  • 弹出切换按钮控件 :用于创建组合框的展开部分。弹出控件可以相对于其他控件进行自我定位,并呈现在其他所有内容之前。此控件也支持一些内置动画。

  • 包含在弹出控件中的 Grid 控件 :其中包含一个 ScrollViewer ,可用于滚动项目列表。 ScrollViewer 中的 StackPanel 用于定位每一项。 StackPanelIsItemsHost 属性设置为 True ,以便组合框控件可以在 StackPanel 内定位子对象。如果希望更改项目的显示方式,可在“对象和时间线”面板中右键单击下拉网格,再选择“更改布局类型”,然后选择不同的面板(例如 UniformGrid ),以替换此版式面板。

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

  • Grid 面板 :用于在组合框项中存放多个子元素。同时,使用 Grid 也是为了便于设计人员向模板中添加更多对象。

  • Border 元素 :使用该元素是因为它包含 BorderThickness 属性,该属性可以用模板绑定到应用此模板的按钮控件的 BorderThickness 属性。

  • ContentPresenter 元素 :此元素包含在 Grid 对象中,并且自动绑定到应用此模板的项目控件的 Content 属性。

使用的属性触发器

控件模板中的属性触发器可用于使控件响应属性改变。可以在“触发器”面板中单击各项,以查看在触发器处于活动状态时更改的属性。例如,在组合框的模板中,当 HasItems 属性为 False 时, DropDownBorder 元素的最小高度将设置为 95 ,以便在单击组合框时显示空的下拉窗口。如果将最小高度设置为 0 ,将显示非常小的下拉窗口。在组合框项的模板中,当 IsHighlighted 属性为 True 时,将改变 Border 对象的 Background 属性,以指示选定了组合框中的哪一项。

使用的画笔

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

  • 使用 WindowBackgroundBrush 设置 DropDownBorder 对象的 Background 属性。

  • 使用 SolidBorderBrush 设置 DropDownBorder 对象的 BorderBrush 属性。

  • IsEnabledFalse 时,使用 DisabledForegroundBrush 设置 Foreground 属性。

  • 如果 SimpleComboBox 中已填充使用 SimpleComboBoxItem 模板的项目,则在选定某个项目时使用 SelectedBackgroundBrush 设置该项目的 Background 属性;并在 IsEnabledFalse 时,使用 DisabledForegroundBrush 设置 Foreground 属性。

最佳实用技巧和设计准则

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

  • 可以通过将 ToggleButtonIsChecked 属性和弹出控件的 IsOpen 属性绑定到应用此控件模板的组合框的 IsDropDownOpen 属性,来设置组合框的展开状态。如果编辑 ToggleButton 或弹出控件,则务必保留这种模板绑定方式。

  • ToggleButton 对象使用名为 ToggleButtonControlTemplate 的单独模板。若要修改此模板,请右键单击 ToggleButton 对象,指向“编辑模板”,然后单击“编辑当前模板”。

  • 若要编辑 SimpleComboBoxItem 模板,请在“资源”面板中单击 SimpleComboBoxItem 样式旁边的“编辑资源”按钮。在样式编辑模式中,右键单击“对象和时间线”面板中的“Style”,指向“编辑模板”,然后单击“编辑当前模板”。如果修改 SimpleComboBoxItem 模板,您可能需要保留或修改 IsHighlighted 触发器。

另请参阅

任务

动手试验:自定义 SimpleComboBox 中展开器按钮的外观

Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。