SimpleTabControl 和 SimpleTabItem

此页仅适用于 WPF 项目

选项卡控件是一种用于在选项卡中显示内容的项目控件。通常,选项卡控件的子元素是选项卡项,这些子元素是带标题内容控件,并且其中每个元素都有一个标题元素和一个内容元素。在 Microsoft Expression Blend 中,可以在“对象和时间线”下右键单击选项卡控件,再单击“添加 SimpleTabItem”以向集合中添加单个项目,或者单击“将 ItemsSource 绑定到数据”以从数据源生成选项卡项元素集合,从而在选项卡控件中放入项。 .

可以通过在“对象和时间线”下右键单击选项卡项,然后单击“编辑文本”,从而编辑选项卡项的文本;也可以双击选项卡项并在其中绘制控件,从而激活选项卡项。

添加两个 SimpleTabItem 之后的 SimpleTabControl 控件的美工板视图

Cc295163.7b97f306-275a-43be-b7b9-60ba93b22d6b(zh-cn,Expression.10).png

控件模板的分类详解

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

  • 网格版式面板:用于在选项卡控件中存放多个子元素。同时,使用网格也是为了便于应用程序用户界面 (UI) 的设计人员向模板中添加更多元素。网格的顶部行设置为自动调整大小,以便按照最大的选项卡项更改其高度;底部行的大小设置为星号 (*),以便用余下的空间显示选项卡项的内容 (PART_SelectedContentHost)。

  • 名为“HeaderPanel”的 TabPanel 元素:用于规定如何组织选项卡项的自定义版式面板。

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

  • 名为“PART_SelectedContentHost”的 ContentPresenter 元素:用于显示应用此模板的选项卡控件的“Content”属性。

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

  • 网格版式面板:用于在选项卡控件中存放多个子元素。同时,使用网格也是为了便于应用程序 UI 设计人员向模板中添加更多元素。此网格面板使用共享大小的概念,可令选项卡控件中的所有选项卡项均保持同宽。

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

  • 名为“ContentSite”的 ContentPresenter 元素:可绑定到应用此模板的选项卡项的“Header”属性。在 ContentSite 元素的“ContentSource”属性中设置此绑定。

    对象视图:SimpleTabControl 控件(左图)和 SimpleTabItem 控件(右图)的基本部件(模板)

    Cc295163.d9257bdb-660a-48b9-b412-abb89e35423a(zh-cn,Expression.10).pngCc295163.5d7f32c0-e1da-43b7-8a92-2a29b48bd701(zh-cn,Expression.10).png

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

使用的属性触发器

控件模板中的属性触发器可用于使控件响应属性改变。可以在“交互”面板中的“触发器”下单击各项,以查看在激活触发器时更改的属性。例如,在选项卡项的模板中,IsSelected 的触发器将设置选项卡项的“ZIndex”属性,强制使其显示在前面。由于这个原因,要使选项卡项正常工作,必须保留此触发器。IsSelected 触发器还会设置更粗的“BorderThickness”值,并更改“Background”属性颜色以表明该项已选定。

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

使用的画笔

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

  • 在未激活任何触发器时使用“WindowBackgroundBrush”设置选项卡控件的“Background”属性。

  • 在未激活任何触发器时使用“SolidBorderBrush”设置选项卡控件的“BorderBrush”属性,并在“IsEnabled”为“False”时使用“DisabledBorderBrush”设置该属性。

  • 在“IsEnabled”为“False”时使用“DisabledForegroundBrush”设置选项卡控件的“Foreground”属性。

  • 在未激活任何触发器时使用“LightBrush”设置选项卡项的 Border 元素的“Background”属性,在“IsSelected”为“True”时使用“WindowBackgroundBrush”设置该属性,而在“IsEnabled”为“False”时使用“DisabledBackgroundBrush”设置该属性。

  • 使用“SolidBorderBrush”设置选项卡项的 Border 元素的“BorderBrush”属性,并在“IsEnabled”为“False”时使用“DisabledBorderBrush”设置该属性。

  • 在“IsEnabled”为“False”时使用“DisabledForegroundBrush”设置选项卡项的“Foreground”属性。

此外,模板还绑定到系统颜色,从而使控件能够使用系统默认设置。在许多情况下,用户可能希望更改这些画笔,以便创建独具特色的设计。为此,可以编辑那些设置系统颜色的触发器。

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

最佳实用技巧和设计准则

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

  • 模板中名为“HeaderPanel”的 TabPanel 元素是专用于 TabControl 的版式面板。TabPanel 知道如何按多行布置选项卡项,也知道在选定某个选项卡项时如何排列选项卡项。HeaderPanel 可以使用不同的布局容器,但需要将其“IsItemsHost”属性设置为“True”。

  • 若要编辑 SimpleTabItem 模板,请在“资源”面板中单击“SimpleTabItem”样式旁边的“编辑资源”按钮。然后,在样式的编辑模式下,右键单击“对象和时间线”下的“Style”,指向“编辑控件部件(模板)”,然后单击“编辑模板”或“编辑副本”。

  • TabControl 系统控件的控件模板比 SimpleTabControl 复杂得多。该控件允许 TabPanel 根据 TabControl 的“Orientation”属性沿不同方向固定。为简化起见,SimpleTabControl 忽略了“Orientation”属性;但如果要将 TabPanel 放在不同的位置,则可以编辑网格的行和列。

  • 请勿重命名名为“PART_SelectedContentHost”的 ContentPresenter 元素,因为该控件的类知道要查找此名称以作为选项卡项的显示位置。

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

另请参见

概念

动手试验:使用位图效果自定义 SimpleTabItem