如何在Excel操作窗格中使用WPF控件?

有几个资源解释如何将WinForms控件添加到Excel。 看到这两个:

http://msdn.microsoft.com/en-us/library/vstudio/e3zbk0hz%28v=vs.100%29.aspx

http://www.clear-lines.com/blog/post/create-excel-2007-vsto-add-in-wpf-control.aspx

他们都提到使用WPF控件 (我需要的那个)的更新选项。 不幸的是,这两种资源都缺乏基本的部分。 有一个缺失的链接:

(1)微软网站提到了一些video – 确切的标题符合我的要求 – 但是看起来,该网站中的所有video都已被删除。

在这里输入图像说明

(2)Clear-Line站点包含一个优秀的分步项目,但是当提到关键部分时,作者使用VS中不存在的一些工具(工具箱的“WPF互操作性”部分) -2010+

在这里输入图像说明

基于上面的截图和其他网站,我得出的结论是缺less的环节,我的WPF UserControl和它在Excel中的外观之间的连接是一些ElementHost

@HighCore的附录。 请参阅下面的工具箱:

在这里输入图像描述

尊敬的自我:

您的问题是,您正在尝试将WPF控件放在另一个 WPF控件中

您需要创build一个老式的WinForm控制 ,然后使用工具箱,如下所示:

在这里输入图像描述

请注意, ElementHost任务部分已被重命名为WPF互操作性,但是它非常活跃。

来自MSDN杂志:

http://msdn.microsoft.com/en-us/magazine/cc163292.aspx#S4

在这里输入图像描述

我不确定你为什么认为有一个“缺失的环节”。 ElementHost是在WinForms上托pipeWPF内容的标准方式,并且在上面的链接中也有详细logging,同样在这里 。

给定任何WinForms容器(如FormPanel ),只需:

 var elementHost = new ElementHost { Child = new YourWPFContentHere() }; this.Controls.Add(elementHost); 

确保您添加对这些程序集的引用:

  • PresentationCore

  • PresentationFramework

  • System.Xaml

  • WindowsBase

  • WindowsFormsIntegration程序