2011-10-06 77 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。

相關問題