我是靠谱客的博主 糊涂飞机,最近开发中收集的这篇文章主要介绍MVVMLightMVVMLight随便讲讲,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MVVMLight随便讲讲

推荐链接及博客:

  • http://www.cnblogs.com/manupstairs/p/4890300.html
  • http://blog.csdn.net/andrew_wx/article/details/37757147
  • http://www.cnblogs.com/yuefei/p/3799430.html

注意点

View实体类(即MVVM里面的Model层)继承ObservableObject。
而ObservableObject已经继承了INotityPropertyChanged属性变更通知接口。
注意下面代码的set方法和RaisePropertyChanged方法。

    public class Person : ObservableObject
    {
        private string _Name;
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                Set(ref _Name, value);
            }
        }

        private int _Age;
        public int Age
        {
            get
            {
                return _Age;
            }
            set
            {
                _Age = value;
                RaisePropertyChanged("Age");
            }
        }
 otityPropertyChanged
       }

每个ViewModel类都将继承MVVMLight的 ViewModelBase 为父类
1、MVVM里面的VM(即ViewModel)继承了ViewModelBase,而ViewModelBase其实也继承了INotityPropertyChanged,但是它是先继承ObservableObject,而ObservableObject继承了INotityPropertyChanged。
2、当RaisePropertyChanged的属性名称参数为空,而通过编译器可以智能加上,可以通过反编译工具知晓,这点改进这点很人性化。

    public class PersonViewModel : ViewModelBase
    {
        public PersonViewModel()
        {
            Persons = SetItems();
            AddPersonCommand = new RelayCommand(AddPerson);
            EditPersonCommand = new RelayCommand(EditPerson);
        }

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

        public ICommand AddPersonCommand { get; set; }

        public ICommand EditPersonCommand { get; set; }

        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()
        {
            Persons.First().Name = "丰城秀吉";
            Persons[Persons.Count - 2].Name = "德川家康";
            Persons[Persons.Count - 1].Age = 70;
        }
    }

最后

以上就是糊涂飞机为你收集整理的MVVMLightMVVMLight随便讲讲的全部内容,希望文章能够帮你解决MVVMLightMVVMLight随便讲讲所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部