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会变成未被引用的,所以垃圾收集的候选人。