【问题标题】:How to Use WPF Controls Inside an Excel Actions Pane?如何在 Excel 操作窗格中使用 WPF 控件?
【发布时间】:2014-07-20 14:41:22
【问题描述】:

有几个资源可以解释如何将 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) 微软网站提到了一些视频——其标题完全符合我的要求——但该网站中的所有视频似乎都已被删除。

(2) Clear-Lines 站点包含一个出色的分步项目,但遗憾的是,当提到关键部分时,作者使用了一些工具(工具箱的“WPF 互操作性部分”)存在于VS-2010+

根据上面的截图和其他网站,我得出的结论是缺少的链接,我的 WPF UserControl 和它在 Excel 中的外观之间的联系是一些ElementHost

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

【问题讨论】:

  • 作为 WPF 编码员,我也尝试在 VSTO 应用程序中使用 WPF 控件,但到目前为止,我不得不使用劣质的 WinForms 方法,因为它已记录在案。
  • VSTO 应用程序与 WPF 配合得很好。我目前正在重构一个用于 Excel 的 Win Form 应用程序,该应用程序使用浏览器将自定义 HTML 从 Web 服务获取到 WPF 应用程序中。对我来说最重要的是学习如何在不使用 WPF 应用程序的情况下操纵 WPF 出现在屏幕上。为了克服这个问题,我从这里开始:c-sharpcorner.com/UploadFile/yougerthen/… 这导致了我当前的架构。控件和 Windows 的 WPF 库和 Excel 插件项目。引用了其他应用程序,一切顺利。

标签: c# wpf winforms excel vsto


【解决方案1】:

自尊:

您的问题是您试图将 WPF 控件 放入 另一个 WPF 控件

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

请注意,ElementHost Tasks 部分已重命名为 WPF 互操作性,但除此之外它非常活跃。

来自 MSDN 杂志:

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

【讨论】:

    【解决方案2】:

    我不确定您为什么认为存在“缺失的链接”。 ElementHost 是在 winforms 上托管 WPF 内容的标准方式,它在上面的链接以及 here 中都有完整的记录。

    给定任何 winforms 容器(例如 FormPanel),只需执行以下操作:

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

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

    • PresentationCore

    • 演示框架

    • System.Xaml

    • WindowsBase

    • WindowsFormsIntegration

    【讨论】:

    • 我想我当时正在寻找一个纯 WPF 解决方案。顺便说一句:视频和“工具箱的 WPF 互操作性部分”肯定都不见了。
    • @swiss_programmer 我不熟悉“工具箱”(不管是什么),但上面的代码应该可以工作。
    • 工具箱 = Visual Studio 中的 Ctrl-Alt-X。
    • HighCore:您有使用 VSTO 的经验吗?真的很难找到关于它的好信息(例如这篇文章的一个主题)。
    • 好吧 - 你让我想起了一位同事,他以小说家高速键入英语的方式键入 HTML。那是在引入可视化 HTML 工具之前。在被 XAML 吓倒之后,我正在慢慢学习如何使用 XAML。会尝试你的建议。
    猜你喜欢
    • 1970-01-01
    • 2014-07-03
    • 2015-01-25
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多