您好,登錄后才能下訂單哦!
WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶界面框架,屬于.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的工作;同時它提供了全新的多媒體交互用戶圖形界面。
MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優點
1. 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。
2. 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。
3. 獨立開發。開發人員可以專注于業務邏輯和數據的開發(ViewModel),設計人員可以專注于頁面設計,使用Expression Blend可以很容易設計界面并生成xaml代碼。
mvvmlight(nuget 下載最新版)
4. 可測試。界面素來是比較難于測試的,測試可以針對ViewModel來寫。
vs2015
在我的程序中跑了一個新線程
Thread.Start()
關閉wpf窗口時,線程里的程序沒跑完,則線程繼續在后臺跑
那就在主窗體的.cs文件中加入
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Environment.Exit(0);
}
在要用到mvvmlight的工種中添加mvvmlight之后
項目中會多出一個ViewModel文件夾
里面有兩個文件:
MainViewModel.cs
ViewModelLocator.cs
而原先的App.xaml里也會多出幾行東東:
<Application x:Class="WpfApp2.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp2" StartupUri="View/WelcomeView.xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:WpfApp2.ViewModel" />
</ResourceDictionary>
</Application.Resources>
</Application>
即上面代碼中的
<ResourceDictionary>
標簽里的內容
這個先不管
直接運行一下,會報錯
在ViewModel文件夾下的ViewModelLocator.cs里會報錯
這個錯誤通過搜索發現了解決方法:
將這行報錯的引用注釋掉或刪掉,添加另一行引用
即
using CommonServiceLocator;
這樣就不報錯了
類繼承ObservableObject
當然要引用相應的包
using GalaSoft.MvvmLight;
這個按我的理解就是繼承了這個類,屬性的變化就可響應,并且從UI中反應出來
即屬性有變動時,UI中也相應更新
在窗體的xaml.cs中,在構造函數里要定義數據綁定時的上下文
this.DataContext = ……;
在xaml文件里綁定
<TextBlock Text="{Binding Welcom.Introduction}" FontSize="30"></TextBlock>
開一個新線程,里面隔一定時間,給綁定的數據更新,這樣在窗口中的TextBlock里也會隨之更新內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。