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