我正在写一个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
有用的属性和真的不知道该怎么用它做什么,如果我能即使使用这种方法得到我想要的。
如果你可以帮忙,请做。 非常感谢。
你有权访问其他程序集源代码吗? – Ucodia
为什么不制作共享程序集(.dll)我们将其用于我们的产品及其工作得很好。我们有4-5个基于WPF的共享程序集。在Visual Studio中,我们只使用“WPF自定义控件库”而不是App.xaml,如果您将主引用添加到主可执行文件中,则会自动加载Themes/Generic.xaml。 – dowhilefor
@Ucodia - 是的,我可以访问外部应用程序代码。 – Sheridan