使用 Ninject 和 MVVMLight。使用 TransientScope 绑定到 viewmodel。
当视图消失时,视图模型会超出范围。
清理我的视图模型的触发器是什么...我有一些需要注销的已注册事件。
我可以在视图卸载事件上使用 EventToCommand,但我想学习如何使用 Ninject MVVMLight 方式进行操作 :) 我可以在任何地方找到零个示例,包括文档。
视图模型定位器
public class ViewModelLocator
{
//CONSTRUCTOR
static ViewModelLocator()
{
Kernel = new StandardKernel(new DataViewsModule());
}
//PRIVATE FIELDS
private static IKernel Kernel;
//PUBLIC PROPERTIES
public LiveDataViewModel LiveDataViewModel { get { return Kernel.Get<LiveDataViewModel>(); } }
/// <summary>
/// Cleans up all the resources.
/// </summary>
public static void Cleanup()
{
}
}
忍者模块
class DataViewsModule : NinjectModule
{
public override void Load()
{
//View Models
Bind<DataViewsViewModel>().ToSelf().InSingletonScope();
Bind<LiveDataViewModel>().ToSelf().InTransientScope();
}
}
视图的构造函数:
public LiveDataView()
{
InitializeComponent();
Unloaded += (s, e) => ViewModelLocator.Cleanup();
}
所以这里是调用 ViewModelLocator Cleanup 方法的视图的卸载事件。我该如何清理这个瞬态视图模型?