WinForms Ribbon库中的快速访问工具栏

快速访问工具栏(Quick Access Toolbar,简称QAT)是Windows Ribbon界面设计中的一项重要功能。它位于窗口标题的左侧,允许用户将常用的Ribbon命令保存在这里,以便快速访问。用户可以通过右键点击Ribbon上的按钮(或切换按钮、复选框),并选择“添加到快速访问工具栏”来将它们添加到QAT中。

开发者可以通过Ribbon标记(Ribbon Markup)来指定一组“默认按钮”(例如:新建、打开、保存)。此外,开发者还可以通过代码动态地添加命令。Ribbon的另一个特性是能够保存和加载命令列表。利用这个特性,在应用程序会话之间保存和加载设置,可以为用户提供一致的UI体验。

更多详细信息可以在MSDN的页面找到。

使用QuickAccessToolbar - Ribbon Markup

以下是一个使用QuickAccessToolbar的示例:

<Application.Views> <Ribbon> <Ribbon.QuickAccessToolbar> <QuickAccessToolbar CommandName='cmdQAT' CustomizeCommandName='cmdCustomizeQAT'> <QuickAccessToolbar.ApplicationDefaults> <Button CommandName='cmdButtonNew' ApplicationDefaults.IsChecked='true' /> <Button CommandName='cmdButtonOpen' ApplicationDefaults.IsChecked='false' /> <Button CommandName='cmdButtonSave' ApplicationDefaults.IsChecked='false' /> </QuickAccessToolbar.ApplicationDefaults> </QuickAccessToolbar> </Ribbon.QuickAccessToolbar> <Ribbon.Tabs> <Tab CommandName='cmdTabMain'> <Group CommandName='cmdGroupFileActions' SizeDefinition='ThreeButtons'> <Button CommandName='cmdButtonNew' /> <Button CommandName='cmdButtonOpen' /> <Button CommandName='cmdButtonSave' /> </Group> </Tab> </Ribbon.Tabs> </Ribbon> </Application.Views>

如所见,QuickAccessToolbar元素定义了两个命令名称。第一个是通过属性CommandName标识的,表示实际的快速访问工具栏命令。第二个是通过属性CustomizeCommandName标识的,表示“更多命令…”按钮的命令。如果指定了“更多命令…”按钮,它可以用于打开一个由应用程序定义的对话框,以便选择更多的命令添加到QAT中。

标记中还使用了QuickAccessToolbar.ApplicationDefaults元素,允许开发者指定哪些项将出现在QAT弹出菜单中。每个项都可以用IsChecked属性标记,这样该项就会出现在QAT中。

使用QuickAccessToolbar - Code-Behind

private Ribbon _ribbon; private RibbonQuickAccessToolbar _ribbonQuickAccessToolbar; public Form1() { InitializeComponent(); _ribbon = new Ribbon(); _ribbonQuickAccessToolbar = new RibbonQuickAccessToolbar(_ribbon, (uint)RibbonMarkupCommands.cmdQAT, (uint)RibbonMarkupCommands.cmdCustomizeQAT); // 注册到QAT自定义按钮 _ribbonQuickAccessToolbar.OnExecute += new OnExecuteEventHandler(_ribbonQuickAccessToolbar_OnExecute); }

请注意,自定义QAT按钮是可选的,如果没有声明,应该使用RibbonQuickAccessToolbar类的另一个构造函数。

void _ribbonQuickAccessToolbar_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { MessageBox.Show("打开自定义命令对话框..."); }

开发者应该加载一个对话框,允许用户选择命令,然后通过操作命令列表来设置它们。

void _buttonNew_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { // 更改QAT命令列表 IUICollection itemsSource = _ribbonQuickAccessToolbar.ItemsSource; itemsSource.Clear(); itemsSource.Add(new GalleryCommandPropertySet() { CommandID = (uint)RibbonMarkupCommands.cmdButtonNew }); itemsSource.Add(new GalleryCommandPropertySet() { CommandID = (uint)RibbonMarkupCommands.cmdButtonOpen }); itemsSource.Add(new GalleryCommandPropertySet() { CommandID = (uint)RibbonMarkupCommands.cmdButtonSave }); }

这段代码与操作gallery的命令列表的代码非常相似。

private Stream _stream; void _buttonSave_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { // 保存Ribbon QAT设置 _stream = new MemoryStream(); _ribbon.SaveSettingsToStream(_stream); } void _buttonOpen_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties) { // 加载Ribbon QAT设置 _stream.Position = 0; _ribbon.LoadSettingsFromStream(_stream); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485