是否可以通过CollectionChanged事件对ObservableCollection属性进行NotifyChanged?

时间:2012-04-01 00:04:13

标签: c# wpf observablecollection inotifypropertychanged

我是否可以将ObservableCollection作为类中的属性,但是订阅它的CollectionChanged事件并在ObservableCollection属性上调用OnPropertyChanged以更新绑定到集合的UI? -

2 个答案:

答案 0 :(得分:2)

是的,但通常你不会因为开销而想做那样的事情。如果您使用ItemsSource的控件,他们知道如何处理CollectionChanged而无需重新创建所有内容。

答案 1 :(得分:2)

您可以公开只读的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); } }
}