我使用Caliburn.Micro v2
與Autofac
一起,我有與WindowManager.ShowDialog
功能的一些問題。實例生命週期管理
我有成功地顯示以下內容的dialog
:
windowManager.ShowDialog(dialogViewModel.Show(typeToShow));
如果通過cross
按鈕關閉新所示窗口之後回想上述期待看到的dialog
再次,我會遇到以下情況例外:
在窗口關閉後無法設置可見性或調用Show,ShowDialog或WindowInteropHelper.EnsureHandle。
這是我的理解是錯誤是由於ShowDialog
只被使用一次,如果我要再次呼籲ShowDialog
,我需要提供一個新的實例。我以證明了這在一定程度上:
windowManager.ShowDialog(new DialogViewModel().Show(typeToShow));
這成功地將導致每一次新的dialog
,但是,我不想叫new
這裏各一次。因此,我如何告知Autofac
每次給我一個DialogViewModel
的新實例,而不是重複使用相同的實例?
編輯1 - DialogViewModel註冊
var buider = new ContainerBuilder();
builder.Register(e => new DialogViewModel())
.AsSelf()
.InstancePerDependency();
我以前一直用.SingleInstance()
和使用.InstancePerDependency()
想到的可能是什麼,我一直在尋找,但似乎沒有,但。
更多信息如何註冊在容器中的dialogViewModel? – nemesv
@nemesv - 編輯OP以包含VM容器註冊。 – Unflux