MVVM 灯光在需要时创建和处理视图

Gaz*_*z83 3 c# memory-management mvvm-light

我仍处于 MVVM Light 的早期并尝试研究这个

我有一个使用页面的 WPF 应用程序。我有一个页面叫做 AVOPage,它后面是一个叫做 AVOViewModel 的 ViewModel。

基本上我想做的就是每次创建页面时都会创建视图模型。当我关闭页面时,ViewModel 被销毁。所以基本上我每次都为这个页面使用一个新的 ViewModel。

那么我如何使用视图模型来做到这一点呢?

Gaz*_*z83 5

解决了我的问题。在 ViewModelLocator 中

public AVOViewModel AVO
{
        get
        {
            if(!SimpleIoc.Default.ContainsCreated<AVOViewModel>())
                SimpleIoc.Default.Register<AVOViewModel>();

            return ServiceLocator.Current.GetInstance<AVOViewModel>();
        }
}

public static void Cleanup()
{
        // TODO Clear the ViewModels     
        if (SimpleIoc.Default.IsRegistered<AVOViewModel>())
            SimpleIoc.Default.Unregister<AVOViewModel>();
}
Run Code Online (Sandbox Code Playgroud)

最后在我的页面关闭事件中

void Page_Close()
{
        PageFrame.Content = null;
        ViewModel.ViewModelLocator.Cleanup();
}
Run Code Online (Sandbox Code Playgroud)