【发布时间】:2012-04-15 04:33:52
【问题描述】:
我是否可以将 ObservableCollection 作为类中的属性但订阅它的 CollectionChanged 事件并在 ObservableCollection 属性上调用 OnPropertyChanged 以更新与集合的 UI 绑定? -
【问题讨论】:
标签: c# wpf observablecollection inotifypropertychanged
我是否可以将 ObservableCollection 作为类中的属性但订阅它的 CollectionChanged 事件并在 ObservableCollection 属性上调用 OnPropertyChanged 以更新与集合的 UI 绑定? -
【问题讨论】:
标签: c# wpf observablecollection inotifypropertychanged
您可以公开一个只读的 ItemNames 属性,而不是绑定到集合并使用转换器。在 Items.CollectionChanged 事件处理程序中,您为 ItemNames 属性引发 PropertyChanged 事件
public class ViewModel
{
public ViewModel()
{
Items = new ObservableCollection<Item>();
Items.CollectionChanged += (o, e) => NotifyPropertyChanged("ItemNames");
}
public ObservableCollection<Item> Items { get; private set; }
public string ItemNames { get { return String.Join(",", Items); } }
}
【讨论】:
是的,但通常你不想做这样的事情,因为开销太大。如果您使用带有ItemsSource 的控件,他们知道如何处理CollectionChanged 而无需重新创建所有内容。
【讨论】: