WinForms中的上下文标签

WinForms应用程序开发中,Ribbon库提供了一种丰富而灵活的用户界面设计方式。最近,这个库增加了对上下文标签(Contextual Tabs)的支持。上下文标签是一种根据用户当前操作的上下文动态显示的标签页,例如在Word中选择表格时,会显示与表格相关的“设计”和“布局”两个标签页。

什么是上下文标签

上下文标签是一组在特定上下文被激活时才会显示的额外标签页。例如,在Word中,当选择文档中的一个表格时,会额外显示两个标签页(设计和布局),这两个标签页包含了仅与表格相关的命令。

上下文标签的基本工作单元是TabGroup,它是一个具有相同上下文的上下文标签组。TabGroup有一个名为ContextAvailable的属性(属性标识符:UI_PKEY_ContextAvailable),它可以有以下值:

  • Active - 上下文当前可用,标签组应该处于激活状态(即“选中”)。
  • Available - 上下文当前可用(标签页不一定处于激活状态)。
  • NotAvailable - 上下文当前不可用。

关于这个主题的更多细节可以在MSDN上找到:

使用上下文标签 - Ribbon Markup

以下是定义上下文标签的views部分。commands部分则相对简单。

RibbonMarkup中定义上下文标签的XML示例如下:

<Application.Views> <Ribbon> <Ribbon.ContextualTabs> <TabGroup CommandName='cmdTabGroupTableTools'> <Tab CommandName='cmdTabDesign'> <Group CommandName='cmdGroupDesign' SizeDefinition='ThreeButtons'> <Button CommandName='cmdButtonDesign1' /> <Button CommandName='cmdButtonDesign2' /> <Button CommandName='cmdButtonDesign3' /> </Group> </Tab> <Tab CommandName='cmdTabLayout'> <Group CommandName='cmdGroupLayout' SizeDefinition='TwoButtons'> <Button CommandName='cmdButtonLayout1' /> <Button CommandName='cmdButtonLayout2' /> </Group> </Tab> </TabGroup> </Ribbon.ContextualTabs> <Ribbon.Tabs> <Tab CommandName='cmdTabMain'> <Group CommandName='cmdGroupMain' SizeDefinition='TwoButtons'> <Button CommandName='cmdButtonSelect' /> <Button CommandName='cmdButtonUnselect' /> </Group> </Tab> </Ribbon.Tabs> </Ribbon> </Application.Views>

在这里,定义了一个名为“Table Tools”的TabGroup,它包含两个上下文标签“Design”和“Layout”。每个标签页中都包含一些按钮。此外,在主标签页中定义了两个按钮,用于设置和取消“Table Tools”上下文。

以下是设置TabGroup上下文的示例代码,使其可见:

private Ribbon _ribbon; private RibbonTabGroup _tabGroupTableTools; private RibbonButton _buttonSelect; private RibbonButton _buttonUnselect; public Form1() { InitializeComponent(); _ribbon = new Ribbon(); _tabGroupTableTools = new RibbonTabGroup(_ribbon, (uint)RibbonMarkupCommands.cmdTabGroupTableTools); _buttonSelect = new RibbonButton(_ribbon, (uint)RibbonMarkupCommands.cmdButtonSelect); _buttonUnselect = new RibbonButton(_ribbon, (uint)RibbonMarkupCommands.cmdButtonUnselect); _buttonSelect.OnExecute += new OnExecuteEventHandler(_buttonSelect_OnExecute); _buttonUnselect.OnExecute += new OnExecuteEventHandler(_buttonUnselect_OnExecute); } void _buttonSelect_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { _tabGroupTableTools.ContextAvailable = ContextAvailability.Active; } void _buttonUnselect_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { _tabGroupTableTools.ContextAvailable = ContextAvailability.NotAvailable; }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485