2009-07-24 27 views
1

我很新來複合WPF,我正在努力與殼的基本架構。在複合WPF(棱鏡)中,可以/應該多個模塊共享一個「工具欄」區域?

假設我有一個帶有三個區域的Shell,分別是'OutlookStyleNav','Main'和'Toolbar'。

如何將按鈕添加到工具欄區域?

每個模塊都應該將自己的按鈕添加到該區域嗎? (如果是這樣,如何顯示所有模塊的按鈕在同時?)

殼應動態檢測我的控制器中的命令並創建基於該命令的按鈕?

我不確定。有什麼建議麼?

回答

1

在我們當前的項目中,模塊發佈所有可用的工具欄和菜單操作,並且工具欄訂閱了這些「ActionAvailable」事件。 這個事件帶有一個委託(它必須在按下工具欄按鈕時被調用),動作描述(=工具提示文本),圖標等。

這種方式既不是shell直接依賴於模塊,這些模塊依賴於shell。

+0

很好的建議。我走了一條稍微不同的路線......我建立了一個ShellController(顯然是一個IShellController接口)。接口被注入到模塊中。模塊然後使用IShellController.RegisterToolbar(ICommand命令)命令註冊其工具欄按鈕。儘管如此,並不像您的實施那樣鬆散耦合。 – willem 2009-07-27 07:28:03