【发布时间】:2012-07-19 15:45:52
【问题描述】:
假设我有一个 UserControl 和一个 DependencyProperty 来绑定到一个 ObservableCollection<Foo> 对象。 Foo 对象的集合实际上被发送到某个 Flash ActiveX 对象。因此,我不能“WPF 绑定”到 Foo 对象的属性。
当 Foo 对象的属性由 UserControl 以外的其他对象更新时,我希望通知 UserControl 以便它刷新(即将所有 Foo 对象重新发送到 Flash 对象)。
我不太确定如何处理这个问题。我能想到两种不太明显的可能性:
UserControl 订阅了包含
ObservableCollection<Foo>对象的对象的某些事件。每当 Foo 对象的属性发生更改时,该事件就会触发,因此 UserControl 会知道将 Foo 对象重新发送到 Flash 对象。-
让 UserControl 订阅 ObservableCOllection 对象的
CollectionChanged事件,不知何故会导致ObservableCOllection<Foo>对象使用ActionNotifyCollectionChangedAction.Reset引发事件。void OnFooCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (!_flashIsLoaded) return; if (e.Action == NotifyCollectionChangedAction.Reset) { ClearAndSendFoos(this, Foos); return; } ....
知道如何完成上述两项工作,或者如何让 UserControl 知道是时候刷新集合了吗?
【问题讨论】: