Prism框架


序言

做項目是提升個人能力最快的方式。

為什么要使用Prism框架?

Prism的出現正是出於構建一個:可重復利用的、可擴展的、靈活的、可以團隊開發的、高質量的應用程序提供了一個很好的解決方案。

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

1、Prism思想是模塊化編程,我將主界面拆分為四個模塊(A、B、C、D)。

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

MVVM

說起這個MVVM模型,就不得不說MVC框架。

將整個前端頁面分成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架構圖。

所以為了解決這個問題,MVVM就閃亮登場了。他把View和Contrller都放在了View層(相當於把Controller一部分邏輯抽離了出來),Model層依然是服務端返回的數據模型。而ViewModel充當了一個UI適配器的角色,也就是說View中每個UI元素都應該在ViewModel找到與之對應的屬性。除此之外,從Controller抽離出來的與UI有關的邏輯都放在了ViewModel中,這樣就減輕了Controller的負擔。

我簡單的畫了下MVVM的架構圖。

概念

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 簡介

Prism 6.3,其中 WPF 平台的項目有這么多個:

  • Prism.Wpf
  • Prism.Autofac
  • Prism.DryIoc
  • Prism.Mef
  • Prism.Ninject
  • Prism.StructureMap
  • Prism.Unity

相比 Prism 6.3,剛剛發布的 8.0 已經好很多了(雖然還是有很多個項目),例如 WPF 平台的項目已經大幅刪減,只保留了 Prism.Wpf、Prism.DryIoc 和 Prism.Unity,也就是說現在 Prism 只支持 DryIoc 和 Unity 兩種 IOC 容器。這樣一來 Prism 項目的結構就很清晰了。

以 WPF 為例,核心的項目是 Prism.Core,它提供實現 MVVM 模式的核心功能以及部分各平台公用的類。然后是 Prism.Wpf,它提供針對 Wpf 平台的功能,包括導航、彈框等。最后由 Prism.Unity 指定 Unity 作為 IOC 容器。

 

資料

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

開源--豆瓣小組UWP

豆瓣小組官網

https://github.com/PrismLibrary/Prism

https://www.cnblogs.com/dino623/p/using_prism_core.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM