我使用WPF MVVM在Excel 2007中創建嚮導。該向導代碼基於this internationalized wizard。在Office(Excel 2007)加載項中的WPF MVVM組合應用程序
因爲WPF必須包含在ElementHost之內,所有我的視圖都是用戶控件,所以沒有App.xaml。相反,當主機WinForm被實例化時,我創建了我的WPF應用程序,並按照here所述動態綁定了我的應用程序資源。
Private _wpfApplication As Windows.Application
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' WPF application instance
_wpfApplication = Application.Current()
If Application.Current Is Nothing Then
_wpfApplication = New Application()
End If
' Merge in your application resources.
_wpfApplication.Resources.MergedDictionaries.Add(TryCast(Application.LoadComponent(New Uri("Pitchbook.Excel.ChartWizard;Component/Themes/Generic.xaml", UriKind.Relative)), ResourceDictionary))
End Sub
Private Sub ChartWizard_Load(sender As Object, e As System.EventArgs) Handles Me.Load
' Create the WPF UserControl.
Dim uc As New MainWindow()
' Assign the WPF UserControl to the ElementHost control's child property.
ehMaster.Child = uc
End Sub
這對我迄今爲止創建的一個模塊工作正常。我有很多模塊可以創建,而不是爲每個模塊創建一個WinForm容器,我希望通過使用Prism創建一個複合應用程序來使應用程序更上一層樓。我想以某種方式擁有一個通用的WinForm,它對App.xaml起着類似的作用。當用戶單擊我的功能區上的按鈕時,我可以啓動該通用主機WinForm將Shell.xaml綁定到ElementHost,並使用引導程序基於某些參數或配置將映射功能區按鈕映射到一組模塊的相關模塊應該加載到通用主機容器中。
我很努力的這樣做的邏輯,我想獲得一些關於這種方法的可行性的意見,如果它是可能的最好的方式可能會做。基本上我需要將這兩層以紅色添加到現有的複合應用程序體系結構中。
http://www.patternjuggler.org/downloads/officecompositeapp.jpg