我有许多集合类,它们实现了自己的自定义更新通知。将这些通知转换为代理类中的INotifyCollectionChanged
实现应该非常容易。
CCD_ 2已经得到处理;这个问题只是关于集合代理。
所以,我正在寻找一种创建代理的方法,它相对容易从XAML中使用。子集合尤其如此。自定义集合类是库的一部分,不能修改(也不能从中派生(。也不可能用INotifyCollectionChanged
兼容的等价物替换集合类型,因为数据更新代码超出了我的控制范围。
我更喜欢使用SL的解决方案,但这不是一个严格的要求。
到目前为止,我相信以下方法是可行的:
- 定义为添加
Proxy
属性的集合类注册的TypeDescriptionProvider
。这允许绑定路径点入代理。从XAML的角度来看,这个解决方案似乎是最简单的,但与SL不兼容 - 定义一个创建代理的值转换器。这将与XAML方面的更多工作一起工作。它应该适用于SL。但是,如果一条路径上需要多个值转换,则可能需要"中间"视觉元素来保存值转换结果
我研究了ObjectDataProvider
,但我认为它不能在这种情况下使用(代理创建方法必须是容器中对象类型的通用方法(。
关于这两种方法中哪一种更好,或者任何其他方法,有什么建议吗?
Paul Stovell创建了一个可编辑的集合适配器,它本身可能无法满足您的需求,但它应该为您创建合适的适配器/代理提供一个良好的起点。
http://www.paulstovell.com/editable-collection-adapter
我决定开发一个类型转换器,它也是MarkupExtension
,正如这篇博客文章所描述的那样。
Silverlight目前不支持MarkupExtension
,但它将在v5中提供。