wpf及mvvmlight學習備忘

vs2015
mvvmlight(nuget 下載最新版)

一、強行關閉

在我的程序中跑了一個新線程
Thread.Start()

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

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

二、項目導入mvvmlight及問題

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

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

using CommonServiceLocator;

這樣就不報錯了

三、mvvmlight框架的ObservableObject

類繼承ObservableObject
當然要引用相應的包

using GalaSoft.MvvmLight;

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

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

this.DataContext = ……;

在xaml文件裏綁定

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章