2010-05-24 106 views
0

我正在開發Outlook 2007 VSTO Addin.I已添加一個功能區並帶有按鈕。我正在嘗試在按鈕單擊時引發一個事件。在Application.Inspectors集合的NewInspector事件中,我應該能夠在Presenter中掛接此Ribbon事件。Outlook 2007功能區和MVP

問題是如何打開檢查員的Ribbon。我試過Globals.Ribbons.MyRibbon這樣做。顯然它只適用於第一個檢查員。我也試過Globals.Ribbons[inspector].MyRibbon

看起來像創建NewInspector時Ribbons集合有0項目和功能區加載僅在執行NewInspector事件處理程序後發生。

是否有任何事件知道何時加載功能區或者有沒有其他方法,我可以在Presenter中保留業務邏輯而不是在功能區視圖中。

回答

1

答案是有很大的努力..

至於我可以告訴色帶沒有通過VSTO或COM互操作暴露出來,這也是無狀態的,所以,帶將一次不管有多少個督察加載被顯示。

我花了很長時間才能優雅地解決這個問題,而且代碼非常複雜。我還應該提及,我選擇使用功能區XML而不是設計者解決問題,但我發現設計人員的限制太多。

它的膽量是你必須創建一個自定義IRibbonExtensibility實現,然後重寫功能區XML中的回調函數,以便它們回調IRibbonExtensibility實例上的方法。 然後,您必須處理加載的事件和新的檢查器事件,以便您可以將兩者聯繫起來。

實際上還有很多,你可以在VSTO contrib項目中查看我的代碼。 http://vstocontrib.codeplex.com/SourceControl/changeset/view/b35f26fdca15#src%2fOutlook.Utility%2fRibbonFactory%2fRibbonFactory.cs

如果你正在爲VSTO構建一個MVP框架,請給我一條線,因爲我有興趣瞭解你在做什麼。

相關問題