自定义Ribbon控件的Tab和Group

在本文中,将探讨如何自定义Ribbon控件的Tab和Group,以及如何使用Help按钮。首先,需要了解的是,Ribbon类不再是单例模式。这是因为想要创建一个包含两个表单的应用程序,每个表单都有自己的Ribbon,因此需要两个Ribbon对象。

Ribbon控件的基本构成

Ribbon控件通常由多个Tab组成,每个Tab可以包含多个Group。在本示例中,将仅使用按钮作为控件。后续的文章中,将详细介绍其他类型的控件。

Tab和Group的使用

命令标记始终是相同的,它是一个将程序员使用的助记符与Ribbon框架使用的ID关联起来的项目列表。还有一些字符串和位图资源。

有趣的部分在于视图标记:

<Application.Views> <Ribbon> <Ribbon.Tabs> <Tab CommandName="cmdTabMain"> <Tab.ScalingPolicy> <ScalingPolicy> <ScalingPolicy.IdealSizes> <Scale Group="cmdGroupFileActions" Size="Large"/> <Scale Group="cmdGroupExit" Size="Large"/> </ScalingPolicy.IdealSizes> <Scale Group="cmdGroupFileActions" Size="Medium"/> </ScalingPolicy> </Tab.ScalingPolicy> <Group CommandName="cmdGroupFileActions" SizeDefinition="ThreeButtons"> <Button CommandName="cmdButtonNew"/> <Button CommandName="cmdButtonOpen"/> <Button CommandName="cmdButtonSave"/> </Group> <Group CommandName="cmdGroupExit" SizeDefinition="OneButton"> <Button CommandName="cmdButtonExit"/> </Group> </Tab> <Tab CommandName="cmdTabDrop"> <Group CommandName="cmdGroupDrop" SizeDefinition="ThreeButtons"> <Button CommandName="cmdButtonDropA"/> <Button CommandName="cmdButtonDropB"/> <Button CommandName="cmdButtonDropC"/> </Group> </Tab> </Ribbon.Tabs> </Ribbon> </Application.Views>

在上述标记中,定义了两个Tab。第一个Tab有两个Group,第二个Tab有一个Group。

在第一个Tab中,标记了两个重要部分。不幸的是,由于Ribbon架构定义,重要部分必须在实用部分之前。

实用部分

它只是Tab中Group的简单定义,以及Group中的控件。值得注意的是Group标签上的SizeDefinition属性。这是Group中控件布局的定义。可以定义自己的布局,或者使用通常足够使用的预定义列表。有关完整列表(带有方便的图片),请参见MSDN上的“通过Size Definitions和Scaling Policies自定义Ribbon”。

重要部分

为了理解这部分,应该知道Ribbon框架的一个特性是能够根据其空间量重新布局Ribbon控件。它几乎可以自动处理这一点,但它需要定义当应用程序表单越来越小时,希望布局如何缩放的提示。

因此,在重要部分中,首先定义每个Group的理想大小。大小可以是四个值之一:Large、Medium、Small和Popup。Popup意味着整个Group被缩小到一个图标,点击时会弹出原始Group。

在定义了Group的理想大小之后,可以定义缩小的顺序,即哪个Group应该首先缩小。通过这种方式,可以使应用程序中最重要的控件比不太重要的控件更可见。

按钮的代码后置处理

对于这些按钮的代码后置处理与之前的文章相同,只需处理正确命令ID的Execute函数即可。

更新(2009年11月18日):只需注册到正确按钮的OnExecute事件即可。

要使用Help按钮,只需在视图标记中添加以下内容:

<Application.Views> <Ribbon> <Ribbon.HelpButton> <HelpButton CommandName="cmdHelp"/> </Ribbon.HelpButton> <Ribbon.Tabs> … </Ribbon.Tabs> </Ribbon> </Application.Views>
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485