如何将外部dll中的WPF MVVM视图加载到WPF应用程序中?

时间:2011-10-06 11:48:04

标签: wpf view load external

我正在编写一个InformationKiosk WPF应用程序,它显示不同的全屏幻灯片(或视图),每个幻灯片旋转一段预定的时间。阶段1已完成......这使用户可以循环浏览他们选择的网页并完美运行。

第二阶段是我被困的地方。我现在需要显示来自外部WPF应用程序的幻灯片(我有完整的代码访问权限),我遇到了真正的问题。

我在InformationKiosk应用程序中添加了其他应用程序的dll作为引用,但由于找不到样式,我收到了一些错误。我认为问题是来自其他应用程序的所需视图使用App.xaml文件和外部样式表中的样式。

我设法使用ResourceDictionary.MergedDictionaries元素中的以下内容从外部样式表文件加载样式:

<ResourceDictionary Source="pack://application:,,,/ProjectName.Views;component/Support/
SupportQueueItemStyle.xaml" />

问题是我无法从其他应用程序加载App.xaml文件,因为我们在一个应用程序中不能有2个App.xamls。因此,在运行应用程序时,我不断得到XamlParseException“Set属性'System.Windows.FrameworkElement.Style'引发异常。” (这意味着它无法找到样式)。

那么这个senario应该如何在WPF / MVVM中实现?当然,必须有一种比将所需视图中的代码复制到InformationKiosk应用程序更好的方法。我还尝试使用以下代码加载外部应用程序程序集:

Assembly assembly = Assembly.LoadFrom(@".\AssemblyName.exe");

虽然它加载正常但我在assembly中找不到任何有用的属性,并且真的不知道如何处理它,如果我甚至可以使用这种方法得到我想要的东西。

如果你能提供帮助,请做。 非常感谢。

1 个答案:

答案 0 :(得分:1)

创建一个共享程序集(.dll)我们将它用于我们的产品并且它的工作非常好。我们有4-5个基于WPF的共享程序集。在Visual Studio中,我们只使用了“WPF自定义控件库”而不是App.xaml,您有一个Themes / Generic.xaml,如果您添加对主可执行文件的引用,它将自动加载。