vs2015
mvvmlight(nuget 下載最新版)express
在個人程序中跑了一個新線程
Thread.Start()框架
關閉wpf窗口時,線程裏的程序沒跑完,則線程繼續在後臺跑
那就在主窗體的.cs文件中加入mvvm
protected override void OnClosed(EventArgs e) { base.OnClosed(e); Environment.Exit(0); }
在要用到mvvmlight的工種中添加mvvmlight以後
項目中會多出一個ViewModel文件夾
裏面有兩個文件:
MainViewModel.cs
ViewModelLocator.cside
而原先的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裏會報錯
這個錯誤經過搜索發現瞭解決方法:
將這行報錯的引用註釋掉或刪掉,添加另外一行引用
即this
using CommonServiceLocator;
這樣就不報錯了spa
類繼承ObservableObject
固然要引用相應的包線程
using GalaSoft.MvvmLight;
這個按個人理解就是繼承了這個類,屬性的變化就可響應,而且從UI中反應出來
即屬性有變更時,UI中也相應更新code
在窗體的xaml.cs中,在構造函數裏要定義數據綁定時的上下文
this.DataContext = ……;
在xaml文件裏綁定
<TextBlock Text="{Binding Welcom.Introduction}" FontSize="30"></TextBlock>
開一個新線程,裏面隔必定時間,給綁定的數據更新,這樣在窗口中的TextBlock裏也會隨之更新內容