MVVMLight
这个不建议用了,请学习Mvvmtookit或者Prism
如果你安装Mvvmlight,生成两个文件,一个MainViewModel.cs可以作为MainWindow的viewModel,另一个ViewModelLocator.cs作为ViewModel定位器,通过Ioc容器,在改文件中获取ViewModel的实例。
打开ViewModelLocator.cs文件,发现文件中有报错,这时只需要删除using Microsoft.Practices.ServiceLocation;这句话,然后重新引用using CommonServiceLocator;
安装Mvvmlightlibs Nuget包
绑定通知
viewModel可以继承ObservableObject或者viewModelBase
不推荐使用RaisePropertyChanged();
推荐使用Set(ref name,value);
viewModelBase继承了ObservableObject,多了IsInDesignMode和CleanUp
cleanUp可以
把DataContext写在xaml里面才有效
高级用法,重写RasiePropertyChanged,对其扩展。
命令对象
Mvvmlight提供了RelayCommand和RelatCommand<T>(支持传递参数)
手动触发更新
当CanExecute依赖的属性变化的时候,调用RelayCommand的RaiseCanExecuteChanged方法
自动触发
利用ViewModelBase的Set方法自动触发属性变更通知,无需手动调用RaiseCanexecuteChanged
DispatcherHelper.checkBeginInvokeOnUI(()=>{})
App.cs里DispatcherHelper.Initialize();
消息对象使用
viewmodel里消息注册
高级用法
(Token)
区分相同消息的不同用途,只让token一样的接收
请求响应
IOC容器
SImpleIOC
默认单例模式,支持构造函数
是否立即创建实例
自己创建实例
视图模型定位器
app.xml