Wpf 使用ObservableCollection实现INotifyPropertyChanged
我想从数据库中提取数据以显示在组合框中,然后允许用户从该组合框中选择值,并通过添加/删除按钮将其添加到列表框中。由于它实现了INotifyPropertyChanged和CollectionChanged,我是否能够使用ObservableCollections保存要绑定到组合框的数据库值?对不起,如果这是一个基本问题,我大约一个月前开始学习WPF 我读过萨夏·巴伯写的非常好的作品 我已经浏览了上的MSDN页面Wpf 使用ObservableCollection实现INotifyPropertyChanged,wpf,observablecollection,inotifypropertychanged,Wpf,Observablecollection,Inotifypropertychanged,我想从数据库中提取数据以显示在组合框中,然后允许用户从该组合框中选择值,并通过添加/删除按钮将其添加到列表框中。由于它实现了INotifyPropertyChanged和CollectionChanged,我是否能够使用ObservableCollections保存要绑定到组合框的数据库值?对不起,如果这是一个基本问题,我大约一个月前开始学习WPF 我读过萨夏·巴伯写的非常好的作品 我已经浏览了上的MSDN页面 使用ObservableCollection与我知道没有实现INotifyPrope
使用ObservableCollection与我知道没有实现INotifyPropertyChanged的列表相比,有哪些优点/缺点?如果组合框中的项目没有更改,即您没有添加/删除/更新项目,然后列表可能适合您的需要。如果您在影响列表属性时手动通知列表属性已更改,则可观察到的集合也会更改
public List<X> MyList
{
get
{
...
}
set
{
if (... != value)
{
... = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("MyList"));
}
}
}
}
....
this.MyList = new List<X> { new X(...), new X(...) };
如果您计划在组合框中添加/删除或更新项,而不创建新的MyList对象,即使用此.MyList.add…,则使用ObservableCollection,它可以在更新集合时发出通知,以便更新绑定。您可能需要注意的事项 不要将INotifyPropertyChanged的ObservableCollection实现与其包含的对象的实现混淆
如果ObservableCollection中某个对象的某个属性发生更改,UI将不会反映该属性,除非该对象也实现了INotifyPropertyChanged。不要指望ObservableCollection会为您解决这个问题。我确实计划更新绑定到组合框的列表,谢谢!!一个问题:在您的示例中,列表是否必须实现INotifyPropertyChanged?i、 e.公共列表MyList:INotifyPropertyChanged在示例中,列表本身不实现INotifyPropertyChanged。它是一个包含List类型属性的类。好吧,如果我有一个自定义类,它在ObservaleCollection中存储了多个属性,ObservaleCollection将不知道这些属性中是否有一个发生了更改,除非该自定义类实现了INotifyPropertyChanged?但是,如果可观测集合只包含从未更改过的字符串,那么这就不是问题,对吗?谢谢