WPF的MVVMLight里ViewModelLocator怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的MVVMLight里ViewModelLocator怎么用相关的知识,希望对你有一定的参考价值。

参考技术A 那个不需要动,找一个调用的地方看下就知道了,mvvmlight好久没用了,记不太清了,你可以贴代码我看看。

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>

标签里的内容
这个先不管
直接运行一下,会报错
技术图片
在ViewModel文件夹下的ViewModelLocator.cs里会报错
这个错误通过搜索发现了解决方法:
将这行报错的引用注释掉或删掉,添加另一行引用
技术图片

using CommonServiceLocator;

这样就不报错了

三、mvvmlight框架的ObservableObject

类继承ObservableObject
当然要引用相应的包

using GalaSoft.MvvmLight;

这个按我的理解就是继承了这个类,属性的变化就可响应,并且从UI中反应出来
即属性有变动时,UI中也相应更新

在窗体的xaml.cs中,在构造函数里要定义数据绑定时的上下文

this.DataContext = ……;

在xaml文件里绑定

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

开一个新线程,里面隔一定时间,给绑定的数据更新,这样在窗口中的TextBlock里也会随之更新内容

以上是关于WPF的MVVMLight里ViewModelLocator怎么用的主要内容,如果未能解决你的问题,请参考以下文章

2021-10-04 WPF上位机 57-MvvmLight的主要程序库

2021-10-04 WPF上位机 56-MvvmLight框架的介绍

2021-10-05 WPF上位机 58-MvvmLight框架对象

MvvmLight是啥???

WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox

谁能给个WPF使用mvvmLight模式的开源例子