我需要在自定义控件上创建依赖项属性。问题是当集合发生更改时,不会调用propertyChangedCallback。我该如何正确处理这种情况?
我担心在初始属性更改期间(将可观察集合分配给依赖项属性时)只是事件挂钩到CollectionChanged事件导致的内存泄漏。
换句话说,我需要创建另一个属性,如ItemsControl.ItemsSource。
我使用Reflector查看了ItemsControl.ItemsSource的源代码。在内部,它使用WeakCollectionChangedListener,它是内部类。我可能可以复制它的来源并使用它,但我相信必须有另一个(更好的)解决方案。
答案 0 :(得分:0)
在Delay的Blog上有一个关于在Silverlight中实现WeakEvent模式的好in-depth post用于这个确切的场景(更改实现INotifyCollectionChanged的集合源)。
他也为WeakEventListener实现提供代码。