65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows Ribbon for WinForms,第 20 部分 – 快速访问工具栏

starIconstarIconstarIconstarIconstarIcon

5.00/5 (14投票s)

2010年3月2日

Ms-PL

2分钟阅读

viewsIcon

33572

downloadIcon

2033

在本文中,我将介绍如何使用 Ribbon 快速访问工具栏。

这系列 CodeProject 文章基于我首先在我的 博客上发表的一系列帖子。

Windows Ribbon for WinForms 库现在支持使用 Ribbon 快速访问工具栏。这篇文章的结果是另一个示例“17-QuickAccessToolbar”,可以在项目网站上找到。

image

什么是快速访问工具栏(QAT)?

快速访问工具栏位于窗口标题的左侧。用户可以将常用的 Ribbon 命令保存在那里,以便轻松访问。用户可以通过右键单击 Ribbon 按钮(或切换按钮或复选框),然后选择“添加到快速访问工具栏”来将该按钮添加到 QAT。

应用程序开发人员可以指定一组“默认按钮”(在上图中:新建、打开和保存)。这是使用 Ribbon 标记完成的。此外,应用程序开发人员可以使用代码动态添加命令。

Ribbon 的另一个功能是能够保存和加载命令列表。使用此功能在应用程序会话之间保存和加载设置,可以为用户提供一致的 UI 体验。

更多详细信息可以在 MSDN 上的 快速访问工具栏 中找到。

使用 QuickAccessToolbar - Ribbon 标记

以下是使用 QuickAccessToolbarviews 部分的示例

<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 - 代码隐藏

初始化

private Ribbon _ribbon;
private RibbonQuickAccessToolbar _ribbonQuickAccessToolbar;

public Form1()
{
    InitializeComponent();

    _ribbon = new Ribbon();
    _ribbonQuickAccessToolbar = new RibbonQuickAccessToolbar(_ribbon,
                                        (uint)RibbonMarkupCommands.cmdQAT,
                                        (uint)RibbonMarkupCommands.cmdCustomizeQAT);

    // register to the QAT customize button
    _ribbonQuickAccessToolbar.OnExecute += 
                    new OnExecuteEventHandler(_ribbonQuickAccessToolbar_OnExecute);
}

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

处理自定义 QAT 按钮(“更多命令...”)

void _ribbonQuickAccessToolbar_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, 
                       IUISimplePropertySet commandExecutionProperties)
{
    MessageBox.Show("Open customize commands dialog..");
}

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

操作命令列表

void _buttonNew_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, 
                IUISimplePropertySet commandExecutionProperties)
{
    // changing QAT commands list 
    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 });
}

此代码与操作 图库 的命令列表的代码非常相似。

保存和加载 Ribbon 设置

private Stream _stream;
void _buttonSave_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, 
                           IUISimplePropertySet commandExecutionProperties)
{
    // save ribbon QAT settings 
    _stream = new MemoryStream();
    _ribbon.SaveSettingsToStream(_stream);
}

void _buttonOpen_OnExecute(PropertyKeyRef key, PropVariantRef currentValue, 
                           IUISimplePropertySet commandExecutionProperties)
{
    // load ribbon QAT settings 
    _stream.Position = 0;
    _ribbon.LoadSettingsFromStream(_stream);
}

您可以将设置保存在任何 .NET 流对象中;通常,它应该保存到文件或注册表中。

保存的设置包括:QAT 命令列表、Ribbon QuickAccessToolbarDock 属性和 Ribbon Minimized 属性。

目前就到这里为止。

© . All rights reserved.