2011-04-04 22 views
1

我是MVVM的新手,決定在當前的項目中使用Caliburn和MEF。該項目基本上是一個基於選定產品託管屏幕和工作流程的框架。當用戶選擇產品時,我需要將所有當前屏幕換出與選定產品相關的屏幕。顯然,這必須以模塊化方式完成,以便產品及其相關屏幕可以根據需要插入或移除。MVVM和Caliburn:更換所有屏幕?

我不認爲這超出了Caliburn的範圍,但我不知道如何處理它。任何人都可以提供一些有關如何完成這一任務的見解?

在此先感謝。

回答

1

有幾種方法可以做到這一點,具體取決於每種產品類型是否具有獨特的導航,或者每種產品之間是否具有共性。

例如,您可以使用Product類型,該類型實現IProduct接口(標記爲InheritedExport屬性)。這些產品類型中的每一種都可能源自Conductor類型,並且可能包含他們需要顯示的屏幕(項目)列表。

ShellViewModel(可以是Conductor<IScreen>.Collection.OneActive類型)可以維護由MEF導入的IProduct的集合。導入完成後,此集合可用於填充ShellViewModelItems集合,該集合綁定到供用戶選擇的產品列表框。

當用戶從列表框中進行選擇時,ShellViewModel可以在所選產品上調用ActivateItem

事實上,如果您給列表框命名爲Items,那麼當您在列表中選擇一個項目時,Caliburn.Micro將自動設置ActiveItem,因此活動項目將被設置爲相應的產品屏幕。

您的ShellView.xaml將包含一個ContentControl,其名稱爲ActiveItem以顯示當前選定的產品(導體)視圖。

+0

感謝大綱,我認爲它可能是這樣的。 – grefly 2011-04-05 13:45:31