将WPF应用程序转换为DLL

时间:2011-12-29 10:14:28

标签: wpf winforms dll integration

我有一个WPF应用程序,我需要与WinForms集成。正如在某些论坛中所建议的那样,我从项目中删除了window1.xaml和app.xaml,然后将项目类型更改为类库。之后,当我在WinForms项目中添加DLL引用时,我收到错误'提供值'System.Windows.StaticResourceExtension'引发异常。 这是什么原因?

此外,由于我使用资源字典,我在app.xaml中添加了合并字典中的所有资源字典引用。现在只有用户控制我该怎么做?

我观察到的另一个例外是'提供价值'System.Windows.Markup.StaticResourceHolder'抛出异常。'

提前致谢...

2 个答案:

答案 0 :(得分:2)

我通过删除app.xaml和window将我的wpf应用程序转换为DLL。 确保如果您使用的是ResourceDictionary文件,那么每个用户控件都应该将它作为合并字典引用,并且如果存在嵌套用户控件,则每个此类引用对于其自己的用户控件是本地的,即用户控件中的用户控件所有用户控件应该引用资源字典文件。

答案 1 :(得分:0)

您所描述的是一个复杂的过程,涉及大量的重构和代码提取。

您应该做的是向Visual Studio解决方案添加一些单独的项目 - 并将所有可重用逻辑移至类库项目。您需要调整命名空间等等......但是所有可重用的代码都应该去那里。

然后你的WPF应用程序应该引用类库项目,你可以继续使用它......现在你可以在解决方案中使用类库来获得一个Win Forms项目......

实际上,您正在尽可能地从UI中提取您的域代码...您可能会编写一个Web应用程序,然后使用相同的库...