使用MVVMLight 開發 Windows 10 App(一)

        編者語 : Windows 10 給開發者帶來了新的機遇,通過一次開發,一次編譯,一個執行文件可以運行在PC , IoT, Mobile,Xbox, HoloLens,SurfaceHub等不同的終端上。上週在直播活動中,爲大家帶來了一個開發的開篇介紹,從今天起會連載Windows 10 開發的相關文章。

       


       MVVM Light是一個基於Model-View-ViewModel的輕量級框架,他可以爲WPF,Silverlight,Xamarin,Uinversal Windows Platform App提供一個MVVM的模式實現。Windows 10 對於支持Windows 8.x PCL 的庫都可以無縫地延續下來,所以MVVM Light也可以在UWP的開發中使用。

       再談MVVM   

       MVVM 是一個設計模式,從傳統的MVC,MVP模式下演變過來。MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優點

1. 低耦合。視圖(View)可以獨立於Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。
2. 可重用性。你可以把一些視圖邏輯放在一個ViewModel裏面,讓很多view重用這段視圖邏輯。
3. 獨立開發。開發人員可以專注於業務邏輯和數據的開發(ViewModel),設計人員可以專注於頁面設計,使用Expression Blend可以很容易設計界面並生成xaml代碼。
4. 可測試。界面素來是比較難於測試的,而現在測試可以針對ViewModel來寫。
      MVVM Light

     

      MVVM Light 不是MVVM 模式下唯一的第三方框架,有Prism/ FreshMVVM 等類似的。但是它是比較成熟的一個。MVVM Light對ViewModel, Command,消息傳遞進行了封裝,方便開發人員調用,並整合了SimpleIoC的依賴注入方式。在MVVM Light中有幾個基類比較重要,我粗略介紹一下。

       ViewModelBase :  你創建的ViewModel都基於這個類,它爲你提供了設計模式下的數據展現方式,方便在Blend下針對數據呈現
                                     進行設計。

      RelayCommand :   爲你的ViewModel提供了事件響應的方式。它基於ICommand。RelayCommand通過構造函數初始化Execute 和 CanExecute
                                     方法。
     
NavigationService: 這是一個跳轉服務,對於頁面跳轉和返回起着重要作用。

      Messenger :  頁面間傳遞消息和數據傳遞。

      在Windows 10 中使用MVVM Light

      1. 通過Nuget添加MVVM Light ,如圖通過Nuget就可以找到MVVM Light的庫,只要點擊Install就可以安裝了,它會把
          MvvmLightLibs也安裝上

       
     
      2.  安裝成功後,除了會爲MVVMLight添加必要的引用外,還創建了ViewModel文件夾,自帶了MainViewModel和ViewModelLocator兩個類。
           ViewModelLocator主要爲項目的依賴注入相關類和實例化相關類。
      

     3.  之後的事情是按照需要創建你的Model和相關的Service完成對應的數據邏輯操作。

          

    4.  對於XAML的修改,你需要爲XAML添加如下語句 ,通過這個來綁定相關的ViewModel
   <Page
    x:Class="UWPDemo.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWPDemo"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    DataContext="{Binding Main, Source={StaticResource Locator}}">
   
   5. 至於其他界面的操作就是按以往那樣即可,當然你可以針對不同的設備進行界面調整。

   

   6. 最後就是運行了,偷笑雖然是一個簡單列表但是起碼跑起來了。

   
   
       
爽吧!一個好的架構都項目來說是一個非常好的保障,MVVMLight 就是你所需要的。我會不間斷地連載相關Windows 10結合MVVM Light開發的文章,希望大家喜歡。

       點擊下載示例

發佈了47 篇原創文章 · 獲贊 31 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章