上个例子跳过了ViewModelLocator,因是采用约定的方式最为方便。
如果有人要修改约定,自定义view和viewModel的默认自动定位方式,怎么办呢?
在app.xaml.cs重写以下方法:
protected override void ConfigureViewModelLocator() { base.ConfigureViewModelLocator(); ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) => { var viewName = viewType.FullName; var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName; var viewModelName = $"{viewName}ViewModel, {viewAssemblyName}"; return Type.GetType(viewModelName); }); }
其中,{viewname}ViewModel这里直接在同一目录下将view名称+ViewModel的文件名默认关联。
如果要修改路径或文件名,修改这个变量即可。
虽然,我修改没有成功。