wpf及mvvmlight學習備忘

vs2015
mvvmlight(nuget 下載最新版)express

1、強行關閉

在個人程序中跑了一個新線程
Thread.Start()框架

關閉wpf窗口時,線程裏的程序沒跑完,則線程繼續在後臺跑
那就在主窗體的.cs文件中加入mvvm

protected override void OnClosed(EventArgs e)
{
 base.OnClosed(e);
 Environment.Exit(0);
}

2、項目導入mvvmlight及問題

在要用到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>

標籤裏的內容
這個先無論
直接運行一下,會報錯
wpf及mvvmlight學習備忘
在ViewModel文件夾下的ViewModelLocator.cs裏會報錯
這個錯誤經過搜索發現瞭解決方法:
將這行報錯的引用註釋掉或刪掉,添加另外一行引用
wpf及mvvmlight學習備忘
this

using CommonServiceLocator;

這樣就不報錯了spa

3、mvvmlight框架的ObservableObject

類繼承ObservableObject
固然要引用相應的包線程

using GalaSoft.MvvmLight;

這個按個人理解就是繼承了這個類,屬性的變化就可響應,而且從UI中反應出來
即屬性有變更時,UI中也相應更新code

在窗體的xaml.cs中,在構造函數裏要定義數據綁定時的上下文

this.DataContext = ……;

在xaml文件裏綁定

<TextBlock Text="{Binding Welcom.Introduction}" FontSize="30"></TextBlock>

開一個新線程,裏面隔必定時間,給綁定的數據更新,這樣在窗口中的TextBlock裏也會隨之更新內容

相關文章
相關標籤/搜索