【发布时间】:2012-05-10 17:18:39
【问题描述】:
我一直无法完成这项工作,因为我认为这是 Visual Studio 中的一个小故障,所以如果有人能尝试这种情况并分享发生的情况,我将不胜感激。
我已在解决方案 2 项目中设置: - 已启用 CLI 的 C++ 应用程序 (.exe) - 一个 C#/WPF 类库,其内部有一个 .xaml 表单和一个匹配的 .cs 窗口类 (.dll)
我想在我的 C++ 应用程序中生成 WPF 窗口,因此我导入它的引用并创建窗口的新实例并在新的应用程序上下文下运行。效果很好。
我现在想在这个窗口之外创建类并处理从 C# 窗口中的受保护函数继承的不同事件,因此在 C++ 程序集中创建一个公共 ref 类,其子类是 .xaml 驱动窗口的 .cs 类。这编译得很好。
即:
public ref class myCPPWindow : myWPFWindow { ... };
然后,我将生成的窗口更改为位于 C++ 程序集中的父类,而不是位于 C# 程序集中的基类。现在,在加载 .xaml 窗口时,我在基 C# 类的 InitializeComponent() 部分收到错误,我需要说明它无法从 C# 程序集中加载 .xaml 窗口源,即使基类工作。任何人都可以对此给出解释/修复吗?
【问题讨论】:
-
仍在寻找答案/建议
-
查看 myWPFWindow.xaml.cs 并检查加载了哪些资源以及它是如何完成的。也许这对你有帮助。
-
使用 InitializeComponent() 正常加载。没有什么特别的事情正在做。我尝试将 InitializeComponent 移动到子级而不是父级,并且在 InitializeComponent() 中使用相对 URI 定位表单的失败没有任何区别。
-
程序集是否包含在 URI 中?
-
是的,这样做会产生“不支持绝对 URI”错误。