using DryIoc;
namespace MvvmToolkitDemo.ViewModel
{
///
/// 这个类包含对应用程序中所有视图模型的静态引用,并提供绑定的入口点。
///
public class ViewModelLocator
{
Container _container;
///
/// 构造函数
///
public ViewModelLocator()
{
//初始化容器
_cOntainer= new Container();
//注册到容器中
_container.Register();
}
///
/// MainViewModel视图模型的静态引用
///
public MainViewModel Main
{
get
{
//通过容器获取实例对象
return _container.Resolve();
}
}
}
}
App.xaml添加ViewModel定位器资源字典
MainViewModel.cs的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
namespace MvvmToolkitDemo.ViewModel
{
public class MainViewModel : ObservableObject
{
#region 属性字段
private string? _userName;
public string? UserName
{
get => _userName;
set => SetProperty(ref _userName, value);
}
private int _age;
public int Age
{
get => _age;
set => SetProperty(ref _age, value);
}
#endregion
///
/// 按钮点击命令
///
public ICommand BtnClick { get; set; }
public MainViewModel()
{
BtnClick = new RelayCommand((obj) => DoRun(obj));
}
private void DoRun(string? obj)
{
Task.Run(() =>
{
int i = 0;
while (true)
{
i++;
Task.Delay(1000).GetAwaiter().GetResult();
Age = i;
}
});
}
}
}