中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

wpf中mvvmlight的使用方法

發布時間:2020-06-10 13:14:28 來源:億速云 閱讀:365 作者:元一 欄目:軟件技術

簡介

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的工種中添加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里也會隨之更新內容

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄城县| 隆尧县| 晋州市| 威远县| 阿勒泰市| 武邑县| 泊头市| 韩城市| 商水县| 永安市| 阿鲁科尔沁旗| 黔东| 双峰县| 泊头市| 商河县| 司法| 仙桃市| 托克逊县| 类乌齐县| 仙居县| 于田县| 吉水县| 易门县| 九台市| 东明县| 信丰县| 汝城县| 靖西县| 宜川县| 鹤庆县| 鄯善县| 乌什县| 米林县| 清原| 同心县| 洛浦县| 子长县| 庆城县| 丘北县| 谷城县| 兴和县|