【发布时间】:2016-01-02 21:27:37
【问题描述】:
我有一个名为 DataModel 的类,我在其中存储 ObservableCollection 的项目。我使用的是静态ObservableCollection,但由于我想绑定到它,而且 OnPropertyChanged 似乎无法正常用于静态属性,所以我将它创建为单例:
public sealed class DataModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private static readonly DataModel instance = new DataModel();
private DataModel() { }
public static DataModel Instance
{
get
{
return instance;
}
}
#region Projects
private ObservableCollection<Project> projects = new ObservableCollection<Project>();
public ObservableCollection<Project> Projects
{
get
{
return projects;
}
set
{
if (projects == value)
{
return;
}
projects = value;
OnPropertyChanged("Projects");
}
}
#endregion Projects
public void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
然后当我点击一个按钮时,
Project newProject = new Project() { Title = "Test" };
DataModel.Instance.Projects.Add(newProject);
根据我从各种来源获得的信息,这应该可以正常工作。但是,永远不会调用 OnPropertyChanged 事件。如果我这样做了
DataModel.Instance.Projects = new ObservableCollection<Project>();
它被调用。但是将项目添加到集合中不会调用它。
【问题讨论】:
标签: c# inotifypropertychanged uwp