2012-03-24 52 views
2

我使用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

回答

1

VSTOContrib是建立在辦公室與WPF和MVVM解耦應用的優秀的開源框架。除了對WPF的支持外,還有對文檔/電子表格和應用程序上下文中的任務窗格/功能區/事件處理的Denpendency Injection管理,確保正確管理COM Interop內存分配的策略,以及單擊安裝的幫助......等等。

從本質上講,所有傳統的Office加載項開發的痛點已經得到解決。我發現它已將我的方法轉變爲Office加載項工作。

相關問題