2011-10-06 44 views
1

我正在写一个InformationKiosk WPF应用程序,它显示不同的全屏幕幻灯片(或视图),旋转每个预定的时间长度。第一阶段已经完成......这使用户可以浏览他们选择的网页并完美地工作。如何将WPF MVVM视图从外部DLL加载到WPF应用程序中?

第二阶段是我卡住的地方。我需要现在显示来自外部WPF应用程序(其中我有完整的代码访问)的幻灯片,我有这个真正的问题。

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

我设法利用来加载从外部样式表文件的样式在ResourceDictionary.MergedDictionaries元以下:

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

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

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

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

虽然它加载好了,我无法找到任何assembly有用的属性和真的不知道该怎么用它做什么,如果我能即使使用这种方法得到我想要的。

如果你可以帮忙,请做。 非常感谢。

+0

你有权访问其他程序集源代码吗? – Ucodia

+2

为什么不制作共享程序集(.dll)我们将其用于我们的产品及其工作得很好。我们有4-5个基于WPF的共享程序集。在Visual Studio中,我们只使用“WPF自定义控件库”而不是App.xaml,如果您将主引用添加到主可执行文件中,则会自动加载Themes/Generic.xaml。 – dowhilefor

+0

@Ucodia - 是的,我可以访问外部应用程序代码。 – Sheridan

回答

1

制作共享程序集(.dll)我们将其用于我们的产品及其工作得很好。我们有4-5个基于WPF的共享程序集。在Visual Studio中,我们只使用“WPF自定义控件库”而不是App.xaml,如果您将主引用添加到主可执行文件中,则会自动加载Themes/Generic.xaml。

相关问题