目前,我在 Excel CTP 中有一个 WinForm 用户控件,该控件又通过元素主机托管 WPF 用户控件。除了性能问题外,一切都运行良好。
我的问题是 - 是否可以在不使用 winform 包装器的情况下直接加载 WPF 控件?即,将 WPF 用户控件或窗口公开为我可以直接传递给 ICTPFactory::CreateCTP 的活动 x 控件?
请注意 - 我没有使用 VSTO。我直接使用 Microsoft.Office.Core。
好吧 - 这个问题已经存在了很长一段时间。所以 - 我会尝试回答它。
首选解决方案 - 不要这样做!WPF 和 Excel CTP 似乎并没有混合在一起。从 UI 刷新问题到焦点和空域问题,有很多问题。
替代解决方案 - 创建一个非托管的 activex 控件并将其用作 CTP。然后使用非托管 activex 控件的 HWND 和HwndSource类来作为非托管 activex 控件上的 WPF 用户控件的父级。
编辑:我将保留这个问题 - 以防有人能提出更好的解决方案。