WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶界面框架,屬于.NET Framework 3.0的一部分。它提供了統(tǒng)一的編程模型、語言和框架,真正做到了分離界面設(shè)計人員與開發(fā)人員的工作;同時它提供了全新的多媒體交互用戶圖形界面。
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)宜春免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優(yōu)點
1. 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當(dāng)View變化的時候Model可以不變,當(dāng)Model變化的時候View也可以不變。
2. 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。
3. 獨立開發(fā)。開發(fā)人員可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā)(ViewModel),設(shè)計人員可以專注于頁面設(shè)計,使用Expression Blend可以很容易設(shè)計界面并生成xaml代碼。
mvvmlight(nuget 下載最新版)
4. 可測試。界面素來是比較難于測試的,測試可以針對ViewModel來寫。
vs2015
在我的程序中跑了一個新線程
Thread.Start()
關(guān)閉wpf窗口時,線程里的程序沒跑完,則線程繼續(xù)在后臺跑
那就在主窗體的.cs文件中加入
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Environment.Exit(0);
}
在要用到mvvmlight的工種中添加mvvmlight之后
項目中會多出一個ViewModel文件夾
里面有兩個文件:
MainViewModel.cs
ViewModelLocator.cs
而原先的App.xaml里也會多出幾行東東:
即上面代碼中的
標(biāo)簽里的內(nèi)容
這個先不管
直接運行一下,會報錯
在ViewModel文件夾下的ViewModelLocator.cs里會報錯
這個錯誤通過搜索發(fā)現(xiàn)了解決方法:
將這行報錯的引用注釋掉或刪掉,添加另一行引用
即
using CommonServiceLocator;
這樣就不報錯了
類繼承ObservableObject
當(dāng)然要引用相應(yīng)的包
using GalaSoft.MvvmLight;
這個按我的理解就是繼承了這個類,屬性的變化就可響應(yīng),并且從UI中反應(yīng)出來
即屬性有變動時,UI中也相應(yīng)更新
在窗體的xaml.cs中,在構(gòu)造函數(shù)里要定義數(shù)據(jù)綁定時的上下文
this.DataContext = ……;
在xaml文件里綁定
開一個新線程,里面隔一定時間,給綁定的數(shù)據(jù)更新,這樣在窗口中的TextBlock里也會隨之更新內(nèi)容