【问题标题】:Office Add-in / Overlay Region on top of the Ribbonbar功能区栏顶部的 Office 加载项/覆盖区域
【发布时间】:2016-05-10 09:23:06
【问题描述】:

我想为 Outlook 的 Ribbonbar 创建一个自定义选项卡。

我立即放弃了使用标准控件创建真正的 Ribbonbar 的想法,因为我知道它受到严重限制。没有自定义控件,几乎没有可用于其他项目中相同控件的知名事件,没有机会在功能区内进行不同的设计或布局等。

我创建了一个区域并用我的自定义 WPF 控件填充它。 该区域运行良好,但问题出在:

  1. 我想在功能区中有一个自定义选项卡(“MyTab”)
  2. 当我单击选项卡时,我想在 Ribboncontrols 所在的位置显示我的区域,以使我的区域看起来像一个 Ribbonbar。

Ribbonbar 的高度是固定的,AFAIK 无法更改。 有没有办法将我的区域覆盖在功能区栏的顶部? 它是否涉及大量工作并不重要。我必须这样做,我想学习如何做。

【问题讨论】:

    标签: c# vb.net vsto outlook-addin ribbon


    【解决方案1】:

    您可以考虑将自定义控件放在功能区栏的正下方。 VSTO(也不是 Outlook 窗体区域)不为此提供任何布局,但您可以使用 Windows API 子类化 Outlook 窗口。有关更多信息和示例代码,请参阅Creating Adjacent Windows In Outlook。或者只使用Advanced Outlook view and form regions,它们提供 TopSubpane 布局。

    Fluent UI 提供了一组预定义的控件,并且不允许对功能区本身进行任何操作。在以下系列文章中阅读有关功能区 UI 的更多信息:

    【讨论】:

    • 我已经将我的区域放在了 TopSubpane 中。不过,我真的需要把它放在功能区的顶部。
    【解决方案2】:

    不,您不能使用 Outlook 公开的任何 API 将区域覆盖在功能区或任何其他控件的顶部。

    【讨论】:

      【解决方案3】:

      在这里和其他地方听说我想做的事情确实是不可能的,我想出了一个解决方法。我决定,如果我不能使用我应该使用的工具,我会即兴发挥。如果其他人需要制作高度定制的 Ribbonbar,这里有一个简短的解释:

      1. 使用 RibbonUI 创建一个功能区选项卡。到目前为止一切顺利。
      2. 创建一个高度为 92px 的无边框对话框(使其适合 在功能区内)
      3. 在该对话框中放置您想要的任何自定义控件(WPF 控件 需要在 ElementHost 中)
      4. 下载“MouseKeyHook”NuGet 包并添加事件处理程序 鼠标点击。
      5. 找出标签的位置(使用检查器 x 和 y corrdinates) 并执行一个简单的 IF 语句来检查用户是否 实际上在您的选项卡范围内点击(不要忘记检查 对于 X 和 Y)。当他这样做时,只需制作一个 Dialog.Show()。
      6. 使用 MouseMove 事件调整对话框的大小和位置 动态的。如果你不这样做,对话框会留在原地 当用户移动 Inspector 时。

      ...等等。您还必须在最小/最大化和关闭时处理对话框的行为。这是很多工作,但幻觉几乎是完美的。它看起来像一个真正的 Ribbontab,你可以在里面做任何你想做的事情。给它一张背景图片,画一张图,打开一个浏览器.... :D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多