有没有办法替换Outlook 2013加载项中的主要内容页面?

时间:2014-01-28 11:22:49

标签: wpf custom-controls ms-office office-interop outlook-addin

我正在阅读Office / Outlook 2013开发人员参考已有一段时间了,我没有找到有关嵌入全屏WPF窗口或类似信息的任何信息。

我的目标是当用户更改为Outlook中的特定文件夹时,主内容页面应替换为完全自定义的UI。打开一个单独的WPF窗口没有问题,但我想在Outlook窗口本身中将UI作为全屏嵌入。

我知道表单区域的概念(替换所有)但它并没有按预期工作。

假设有一个Replace-All表单区域,其中包含工厂消息类IPM.Test.MainRegion。我认为拦截文件夹切换事件可以让我调用应该以替换方式显示主区域的区域:

void explorer_BeforeFolderSwitch(object NewFolder, ref bool Cancel)
{
  Outlook.Folder target = NewFolder as Outlook.Folder;

  if (target.Name == "Test")
  {
    Outlook.NameSpace ns = this.Application.GetNamespace("MAPI");
    Outlook.MAPIFolder mapi = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);

    Outlook.MailItem item = mapi.Items.Add("IPM.Test.MainRegion") as Outlook.MailItem;
    item.Display(false); //no modal window - but still opens a modal

    Cancel = true; //don't actually switch the folder to surpress default view.
  }
}

问题是这个代码实际上打开了一个新的邮件窗口(尽管Display的参数是false),它没有显示VS Region Designer中设计的表单。

这里有什么我想念的吗? Office开发人员参考并没有真正说明替换所有区域(仅适用于非自定义消息类,在这种情况下它是微不足道的)。

你有什么建议吗?

更新

所以,现在似乎在主视图文件夹中显示表单区域。表单区域始终与其注册的项目类型相关联(日历,任务,邮件...)。因此,表单区域不是这样做的方式。要么不能完全取代主窗口,要么有另一种方式。

1 个答案:

答案 0 :(得分:1)

将MAPIFolder.WebViewOn属性设置为true,将MAPIFolder.WebViewURL设置为包含要显示的HTML的URL(可以是本地文件)。该HTML页面可以嵌入您尝试显示的任何控件。