我是否可以将ObservableCollection作为类中的属性,但是订阅它的CollectionChanged事件并在ObservableCollection属性上调用OnPropertyChanged以更新绑定到集合的UI? -
答案 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); } }
}