前置知识:
该项目为C/S结构,即客户端/服务端。
Prism框架能够实现:模块化、导航、依赖注入、事件聚合器、命令绑定、可测试性功能。
具体为:区域、模块化、导航、对话服务、发布订阅
依赖注入:老板给超市注入某个商品,顾客想买就买,互不依赖。
Prism学习
配置Prism项目
1、创建WPF项目
2、在依赖项中 管理NuGet程序包,下载安装Prism框架(有依赖注入功能的版本)。
3、配置App.xaml文件:
引入prism名称空间,将<Application>框架改成<prism:PrismApplication>
4、配置App.xaml.cs文件:
继承 PrismApplication,编写两个方法,一个为启动页,一个为注入服务
PrismApplication也是继承Application的
此时启动项目,会发现有两个窗口,因为本身StartupUri="MainWindow.xaml">会有启动窗口,后来又在App.xaml.cs文件中设置了启动页。所以要把前面那个删除。
5、如此建一个prism项目可能过于复杂,可以直接不建WPF项目,直接建Prism Full App项目。
Prism-区域
实现如下界面:点击不同模块,出现不同内容
实现思路:把第二行设成用户控件,并且设置三个,每个模块按钮绑定一个用户控件。点击就出现相应用户控件。
首先在主界面第一行写出三个按钮(并且绑定命令Y,以及一个函数参数),第二行绑定用户控件X
在views中定义好三个用户控件界面
在视图模型中,定义一个用户控件属性X,定义一个命令Y,用以执行方法O,命令Y放在构造函数里,项目启动就执行命令Y,同时方法O嵌在命令Y上,所以方法O也执行,方法O会判断是哪个按钮及其的参数,而给用户控件X赋值。
具体实现:
1、在MainWindow.xaml中编写出三个按钮
2、新建一个Views文件夹用于放用户控件,新建3个用户控件,在其xaml文件中编写内容:
<TextBlock Text="我是C" FontSize="100"></TextBlock>
因为点击需要用户控件的替换,所以要给窗口建立视图模型。
3、新建一个ViewModels文件夹用于放视图模型,新建MainWindowViewModel视图模型
视图模型命名必须是窗口名字+ViewModel
4、 在MainWindowViewModel视图模型中添加一个绑定的属性,(因为需要绑定一个用户控件)并且该属性改变时,要通知界面。
继承:BindableBase,其中的 RaisePropertyChanged()方法,可以实现通知界面
propfull快捷键
// 显示的内容
private UserControl _ShowContent;
public UserControl ShowContent
{
get { return _ShowContent; }
set
{
_ShowContent = value;
RaisePropertyChanged();
}
}
5、在主窗口中绑定视图模型的属性
<ContentControl Content="{Binding ShowContent}"></ContentControl>
在主窗口设置prism中的一个属性让其自己找到窗口上下文,因为是按名字找的,所以才有上述命名规则
xmlns:prism="http://prismlibrary.com/&