wpf mvvmlight框架demo

本文详细介绍如何使用MVVMLight框架进行WPF应用开发。从NuGet安装MVVMLight开始,逐步介绍Model、ViewModel和View的概念及实现。通过示例代码,展示如何在ViewModel中定义命令和方法,以及如何在XAML中绑定数据。

https://www.cnblogs.com/manupstairs/p/4890300.html
1.在nuget中搜索安装mvvmlight。过程如果提示nuget版本低,则卸载nuget,重新下载并重启即可(网络有出错的解决教程,不重复讲解)
2.MVVM其实包括三部分,model即数据模型,viewmodel依赖于model,操作model,并定义了一些列的方法与command命令,VIEW就是指的xaml,viewmodel是view的数据源
3.demo,新建model文件夹,存放自定义类
在这里插入图片描述
定义model类,并继承ObservableObject,作用类似于INotify接口,注意属性set的写法
在这里插入图片描述

编写viewmodel继承ViewModelBase

 public class MainViewModel : ViewModelBase
   		 {
        	/// <summary>
        	/// Initializes a new instance of the MainViewModel class.
        	/// </summary>


       	 public MainViewModel()
        {
            Persons = SetItems();
            AddPersonCommand = new RelayCommand(AddPerson);
            CancellCommand = new RelayCommand(y);
            EditPersonCommand = new RelayCommand<Person>(x => {
                Person  p = x as Person;
                EditPerson(p);
            });
        }

        private ObservableCollection<Person> _Persons;
        public ObservableCollection<Person> Persons
        {
            get
            {
                return _Persons;
            }
            set
            {
                _Persons = value;
                //这边加与不加RaisePropertyChanged()我认为是没有区别的。
                //RaisePropertyChanged();
            }
        }
      
        public RelayCommand AddPersonCommand { get; set; }

        public RelayCommand<Person> EditPersonCommand { get; set; }

        public RelayCommand CancellCommand { get; set; }


        public int sum(CancellationToken ct, int n)
        {
            int ss = 0;
            for (; n > 0; n--)
            {   ct.ThrowIfCancellationRequested();
           
                ss += n;
            }
            return ss;
        }

        public void y()
        {
            CancellationTokenSource ct = new CancellationTokenSource();
            Task<int> t = Task.Run(() => sum(ct.Token, 1000000), ct.Token);
            ct.Cancel();
            try
            {
                int s = t.Result;
            }
            catch (System.Exception e)
            {
                
                throw e;
            }
        }
        
        private ObservableCollection<Person> SetItems()
        {
            var items = new ObservableCollection<Person>();
            foreach (var item in Enumerable.Range(0, 10))
            {
                Person p = new Person()
                {
                    Name = "Name" + item,
                    Age = item
                };
                items.Add(p);
            }
            return items;
        }

        private void AddPerson()
        {
            Persons.Add(new Person { Name = "织田信长", Age = 28 });
        }

        private void EditPerson(Person p)
        {
            Persons.Remove(p);
        }
    }

xaml
在这里插入图片描述

设置datacontext
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值