【发布时间】:2018-10-05 11:06:48
【问题描述】:
我试图了解为什么在添加到列表的项目不起作用时从 AddNoteToList 调用 NotifyProportyChanged 的函数(下面的代码...)来更新视图。
当我在列表上做作业时效果很好,但如果我尝试添加项目然后手动调用NotifyProportyChanged,它就不行了。
我知道我应该使用ObservableCollection 来解决问题,但我想知道为什么我编写的这个实现不起作用。
public class MainWindowVM : INotifyPropertyChanged
{
public Model.MainWindowModel Model { get; set; }
public List<DataProtocol.Note> _notesListVM;
public List<DataProtocol.Note> NotesListVM
{
get
{
return _notesListVM;
}
set
{
_notesListVM = value;
NotifyProportyChanged("NotesListVM");
}
}
//dp:
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyProportyChanged(string propName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
//Command:
public RelayCommand AddNoteCommand { get; set; }
public void AddNoteToList(object parm)
{
string value = parm.ToString();
NotesListVM.Add(new DataProtocol.Note(value));
NotifyProportyChanged("NotesListVM");
}
public MainWindowVM()
{
Model = new PL.Model.MainWindowModel();
NotesListVM = Model.NotesList;
AddNoteCommand = new RelayCommand(AddNoteToList);
}
}
【问题讨论】:
-
因为列表的instance没有改变。
ObservableCollection实现了INotifiyCollectionChanged,视图使用它来等待列表内容的更新。
标签: wpf mvvm observablecollection inotifypropertychanged