很簡單,僅僅是包含乙個實體物件,這邊注意的的是那他繼承了乙個父類:observableobject,這個父類的作用就是保證能夠檢測屬性是否被改變。其實在繼承的過程中,可能會遇到乙個問題:observableobject無法被繼承,解決方案是加乙個using galasoft.mvvmlight;命名空間。observableobject實現了inotifypropertychanged介面,通過觸發propertychanged事件達到通知ui更改的目的;所以我們在定義實體物件的時候,只需要呼叫raisepropertychanged(propertyname)就可以進行屬性更改通知了。所以實體裡面定義的每個屬性都加上raisepropertychanged(propertyname)的呼叫,就可以實現對ui的互動更新了。
2、寫乙個videmodel,來負責跟view的互動。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using galasoft.mvvmlight;
using mvvmlight1.model;
namespace mvvmlight1.viewmodel
; welcome = new welcomemodel();
welcome.introduction = "hello world!";
}#region 屬性
private welcomemodel welcome;
public welcomemodel welcome
set
}#endregion}}
在敲**的過程中,我發現c#和c++很相似,c++中的#include和c#中的using 是乙個意思,在當前類中呼叫另乙個檔案中的屬性(類似c++中的成員函式)方法是首先要包含原始檔中命名空間,然後在當前類中例項化乙個物件,並new,最後用當前的例項化物件呼叫其他檔案中的屬性並賦值。
此**也很簡單,包含了乙個命名為welcome的welcomemodel屬性,繼承了viewbasemodel父類,viewbasemodel同時繼承 observableobject類和icleanup介面。所以他同樣有inotifypropertychanged介面的能力,能夠通過觸發propertychanged事件達到通知view的目的;
建構函式中對 welcome 屬性進行了例項化。
3、寫乙個view,來顯示和互動viewmodel。
每乙個view其實就是乙個mainwindow。如果你新建的工程中沒有view資料夾,你可以選擇在當前工程下右擊「新增」-》新建資料夾,將此檔案更名為view。
在view下滑鼠右鍵「新增」-》「新建項」-》「視窗」,影子隨意更改,注意更改名字時不要隨意刪除字尾名,這時會出現乙個窗體:
修改welcomeview.xaml中的**
extblock 繫結了 welcome.introduction,所以應該顯示welcome物件下的introduction屬性。
這時候的viewmodel和view是沒有任何關係的,所以我們在code-behind的建構函式中寫上如下**(在welcomeview.xaml.cs檔案中修改):
using mvvmlightdemo.viewmodel;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows;
using system.windows.controls;
using system.windows.data;
using system.windows.documents;
using system.windows.input;
using system.windows.media;
using system.windows.media.imaging;
using system.windows.shapes;
namespace mvvmlightdemo.view}}
把 welcomeviewmodel 賦值給當前檢視的資料上下文。所以可以在當前檢視中使用viewmodel中所有的公開屬性和命令。
執行效果如下
如果你的執行結果和上圖不一樣,即仍然是工程自帶的效果圖,你可以嘗試用如下方法修改:
前面講過,startupuri用於指定啟動視窗,因此只要修改要啟動的視窗即可。注意這裡的view是工程下的資料夾,如果你的*.xaml與mainwindow在同一級下,就不用帶view。
WPF入門教程系列(4)
mvvmlight安裝之後,我們可以看到簡易的框架布局,生成了乙個viewmodel資料夾,viewmodel層的內容都放在這邊,除了main物件的viewmodel之外,還包含乙個viewmodellocator檔案,用來注入當前的viewmodel全域性例項。一 先來說說分層結構 如圖 1 vi...
WPF入門教程系列一
一 前言 公司專案基於wpf開發,最近專案上線有點空閒時間寫一篇基於wpf的基礎教材,wpf也是近期才接觸,學習wpf也是在網上查資料與微軟的msdn進行學習,寫本部落格的目為了溫故而知新把學習過程記錄下來,以備後查。學習wpf的基礎知識 1 wpf是微軟提供的一種用來開發 桌面應用 的技術 框架 ...
WPF入門教程系列一 基礎
一 前言 最近在學習wpf,學習wpf首先上的是微軟的msdn,然後再搜尋了一下網路有關wpf的學習資料。為了溫故而知新把學習過程記錄下來,以備後查。這篇主要講wpf的開發基礎,介紹了如何使用visual studio 2013建立乙個wpf應用程式。首先說一下學習wpf的基礎知識 1 要會一門.n...