我組成了我的Caliburn.Micro應用程序的UI,使工具欄按鈕具有自己的View和ViewModel。Caliburn.Micro - 如何ActivateItem從導體以外的類
在我見過的例子,來激活一個新的屏幕,在殼方法調用Conductor.ActivateItem
,通過在視圖模型的實例,但在我的情況下ToolbarButtonViewModel.Submit()
方法是一類不的貝殼。
從類中激活屏幕的最佳方式是什麼?其他比shell更好嗎?
我組成了我的Caliburn.Micro應用程序的UI,使工具欄按鈕具有自己的View和ViewModel。Caliburn.Micro - 如何ActivateItem從導體以外的類
在我見過的例子,來激活一個新的屏幕,在殼方法調用Conductor.ActivateItem
,通過在視圖模型的實例,但在我的情況下ToolbarButtonViewModel.Submit()
方法是一類不的貝殼。
從類中激活屏幕的最佳方式是什麼?其他比shell更好嗎?
您應該考慮使用EventAggregator。創建一條消息,由主要指揮人員處理並從工具欄vm發送它。當主要售票員收到消息時,激活它指定的屏幕。
這聽起來像是一個視圖間通信的情況(在工具欄視圖模型和shell視圖模型之間)。根據您希望代碼的鬆散耦合程度,您可以:
ShellViewModel
參考ToolBarViewModel
實例,請訂閱ShellViewModel
中的ToolBarViewModel
的事件來檢測提交,並將新屏幕實例傳遞給委託實例。EventAggregator
)。訂閱在ShellViewModel
事件,併發布在ToolBarViewModel
ShellViewModel
實際上進行ToolBarViewModel
(想必你將不得不使用Conductor<T>.Collection.AllActive
型)。 ToolBarViewModel
然後將是Screen
並具有Parent
屬性(是的,這是醜陋的)。
Ooooh EventAggregator!現在可以做到這一點... :) – 2011-06-01 11:55:19