创建步骤
创建Mvvm结构的开发环境很简单,首先在View层的App.xaml文件中引用ViewModel层,设置全局资源。
其次,给主窗体设置数据源并设置绑定
接着,在ViewModel层新建定位器和主窗体绑定的类
定位器中相关代码
如果是使用NuGet导入MvvmLight,就会自动创建好了这个ViewModelLocator类,在类的构造函数中会带有这个
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
关于这个我也不清楚有什么作用,毕竟SimpleIoc.Default中就继承了IServiceLocator。
这里使用的SimpleIoc,可以去以下链接浏览,这里对mvvmLight做了详细的介绍:
https://www.cnblogs.com/maanshancss/p/5794780.html
简要介绍一下,就是使用了SimpleIoc容器,使用依赖注入的方式将ViewModel类注册进去容器中,也可将一些服务,公共全局变量注册进去,例如:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<IDataService, DataService>();//公共变量交换器
SimpleIoc.Default.Register<MainWindowViewModel>();//主窗口ViewModel
SimpleIoc.Default.Register<TextViewModel>();//测试窗口ViewModel
//创建导航服务,并将导航服务注册进容器
var navigationService = this.CreateNavigationService();
SimpleIoc.Default.Register<INavigationService>(() => navigationService);
}
/// <summary>
/// 主窗口
/// </summary>
public MainWindowViewModel MainWindowViewModel
{
get
{
return ServiceLocator.Current.GetInstance<MainWindowViewModel>();
}
}
/// <summary>
/// 测试窗口
/// </summary>
public TextViewModel TextViewModel
{
get
{
return ServiceLocator.Current.GetInstance<TextViewModel>();
}
}
/// <summary>
/// 创建导航服务
/// </summary>
/// <returns></returns>
private INavigationService CreateNavigationService()
{
var navigationService = new NavigationService();
//主窗口
navigationService.Configure(ViewNames.MAIN_VIEW, new Uri("/MainWindow.xaml", UriKind.RelativeOrAbsolute));
/