概述
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随便讲讲所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复