6
繼MVVM模式之後,我試圖通過View來響應來自View Model的請求來連接子窗口的顯示。這種編碼風格是否會導致內存泄漏
使用MVVM光強Messenger中的視圖將註冊爲要求在View的構造函數,以便顯示子窗口:
InitializeComponent();
Messenger.Default.Register<EditorInfo>(this, (editorData) =>
{
ChildWindow editWindow = new EditWindow();
editWindow.Closed += (s, args) =>
{
if (editWindow.DialogResult == true)
// Send data back to VM
else
// Send 'Cancel' back to VM
};
editWindow.Show();
});
是否訂閱使用Lambda原因問題ChildWindow Closed事件爲垃圾收集。或者換句話說,當(如果有的話)editWindow會變成未被引用的,所以垃圾收集的候選人。