目录
一、安装&新建项目
1. Nuget安装prism.core,prism.wpf,prism.unity
2.可安装vs扩展包快速创建项目:Prism Template Pack
扩展 --> 管理扩展 -->联机,搜索Prism Template Pack,下载完成后重启VS安装,
tips: vs2019下载扩展时,会出现下载失败的情况,可用电脑连接手机热点下载
3.新建项目,选择Prism Blank App(.NET Core),容器有两种(Unity,Dryloc),本文用Unity容器,
App.xaml
public partial class App
{
//重写CreateShell方法,在App.xaml文件中,不再设置StartupUri
protected override Window CreateShell()
{
//使用容器创建主窗体
return Container.Resolve<MainWindow>();
}
//给容器中注册对象
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
二、View与ViewModel的绑定
- View中引入名称空间:
xmlns:prism="http://prismlibrary.com/"
- 设置为自动关联:
prism:ViewModelLocator.AutoWireViewModel="True"
tips: 1. 必须是Views和ViewModels目录
2. 需要保证命名规范的正确性
① View可以以View结尾,也可以不写
② ViewModel必须以View的名称+”ViewModel”进行命名
3. eg: Views: Main, HomeView;
ViewModel:MainViewModel, HomeViewModel
3. 默认的查找逻辑的源码
var viewName = viewType.FullName;
viewName = viewName.Replace(".Views.", ".ViewModels.");
var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName;
var suffix = viewName.EndsWith("View") ? "Model" : "ViewModel";
var viewModelName = String.Format(CultureInfo.InvariantCulture, "{0}{1}, {2}", viewName, suffix, viewAssemblyName);
return Type.GetType(viewModelName);
三、属性通知
1. ViewModel继承BindableBase抽象类,实现INotifyPropertyChanged接口,使用SetProperty
public class MainWindowViewModel : BindableBase
{
private string _title;
public string Title
{
get { return _title; }