我正在使用caliburn micro。我的問題是如何管理對話框。 最大的問題是,因爲當不使用窗口時,你的代碼不會停下來等待。MVVM多個對話框令人頭疼
所以我做了這樣的事情。
public void ShowDialog(IScreen dialogModel, Action<object> callback = null)
{
ActivateItem(dialogModel);
if (callback != null)
dialogModel.Deactivated += delegate { callback(dialogModel); };
}
這有很多problem.For例子的情況下,我想顯示一個對話框,然後在回調我想表明在某些情況下,對話框早餐的旅館而來的疑難問題都來寫的DoSomething額外功能爲了不duplicate.And我失去所有其他本地variables..The問題較大時需要更多的水平..
showDialog(A, (cb)=>{
if(...) {
showDialog(B,(cb2)=>{
DoSomething();
});
}
else{
DoSomething();
}
});
還因爲我想一次顯示我延長Collection.OneActive一個對話框。但是這也有問題。在停用事件回調時,如果我想要,我無法關閉所有事件!因爲它在內存中保留下一個參考後禁用觸發,即使你清除它再次來..
謝謝您的建議!我會盡量使用您的建議書寫我的所有案例,並提出一個答案。但一個小問題,也許我需要一個黑客。可以說,我顯示付款對話框,然後我決定我需要第二個對話框。目前爲止沒有問題。但萬一我顯示密碼的第二個對話框,那麼我怎麼可以停用所有的屏幕? http://stackoverflow.com/questions/14896149/caliburn-micro-conductor-problems在這裏我有這樣做的問題,因爲停用CM後保持引用下一個viewModel,即使你清除並關閉所有它再次添加。 – GorillaApe 2013-02-17 20:51:34
唯一可行的解決方法是不使用TryClose,但(this.Parent作爲DialogConductorViewModel).DeactivateItem(this,false); – GorillaApe 2013-02-17 20:53:38