宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

序言

做项目是提升个人能力最快的方式。

Prism框架-冯金伟博客园

为什么要使用Prism框架?

Prism的出现正是出于构建一个:可重复利用的、可扩展的、灵活的、可以团队开发的、高质量的应用程序提供了一个很好的解决方案。

Prism框架中一些非常重要的概念

1、Prism思想是模块化编程,我将主界面拆分为四个模块(A、B、C、D)。

2、模块之间不能互相引用,也就是解耦了。

MVVM

说起这个MVVM模型,就不得不说MVC框架。

Prism框架-冯金伟博客园

将整个前端页面分成View,Controller,Modal,视图上发生变化,通过Controller(控件)将响应传入到Model(数据源),由数据源改变View上面的数据。

整个过程看起来是行云流水,业务逻辑放在Model当中,页面渲染逻辑放在View当中,但在实际运用上却存在一个问题:那就是MVC框架允许View和Model直接进行通信!!

换句话说,View和Model之间随着业务量的不断庞大,会出现蜘蛛网一样难以处理的依赖关系,完全背离了开发所应该遵循的“开放封闭原则”。

MVVM(Model–View–Viewmodel)是一种软件架构模式。

简单的讲,MVVM是MVC的改进版。我们都知道MVC软件架构模式是苹果推荐的开发模式。

MVC中的M就是单纯的从网络获取回来的数据模型,V指的我们的视图界面,而C就是我们的ViewController。

在其中,ViewController负责View和Model之间调度,View发生交互事件会通过target-action或者delegate方式回调给ViewController,与此同时ViewController还要承担把Model通过KVO、Notification方式传来的数据传输给View用于展示的责任。随着业务越来越复杂,视图交互越复杂,导致Controller越来越臃肿,负重前行。脏活累活都它干了,到头来还一点不讨好。福报修多了的结果就是,不行了就重构你,重构不了就换掉你。

来一张斯坦福老头经典的MVC架构图。

Prism框架-冯金伟博客园

所以为了解决这个问题,MVVM就闪亮登场了。他把View和Contrller都放在了View层(相当于把Controller一部分逻辑抽离了出来),Model层依然是服务端返回的数据模型。而ViewModel充当了一个UI适配器的角色,也就是说View中每个UI元素都应该在ViewModel找到与之对应的属性。除此之外,从Controller抽离出来的与UI有关的逻辑都放在了ViewModel中,这样就减轻了Controller的负担。

我简单的画了下MVVM的架构图。

Prism框架-冯金伟博客园

概念

private DataGridViewModel ViewModel => DataContext as DataGridViewModel;

 Mode=OneWay

1.OneTime:一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。

2.OneWay:单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。

3.TwoWay:双向绑定,在任何时候都可以同时更新源数据和目标。

public virtual void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState);

public virtual void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary<string, object> viewModelState, bool suspending);

使用Microsoft.Practices.Unity 依赖注入

豆瓣小组

官网

Prism框架-冯金伟博客园

资料

https://www.jianshu.com/p/0ae3c0d830e5

开源–豆瓣小组UWP

豆瓣小组官网