我有许多集合类实现了它们自己的自定义更新通知。将这些通知转换为代理类中的 INotifyCollectionChanged
实现应该非常容易。
INotifyPropertyChanged
已经处理好了;这个问题只是关于收集代理。
因此,我正在寻找一种创建相对容易从 XAML 使用的代理的方法。对于子集合尤其如此。自定义集合类是库的一部分,不能修改(也不能从中派生)。也不可能用 INotifyCollectionChanged
兼容的等效项替换集合类型,因为数据更新代码不在我的控制范围内。
我更喜欢也适用于 SL 的解决方案,但这不是严格要求。
到目前为止,我认为以下方法是可行的:
- 定义一个
TypeDescriptionProvider
为添加Proxy
属性的集合类注册。这允许绑定(bind)路径点到代理中。从 XAML 的角度来看,此解决方案似乎是最简单的,但与 SL 不兼容。 - 定义一个创建代理的值转换器。这将与 XAML 端的更多工作一起工作。它应该适用于 SL。但是,如果路径上需要多个值转换,则可能需要“中间”视觉元素来保存值转换器结果。
我查看了 ObjectDataProvider
,但我认为它不能用于这种情况(代理创建方法必须对容器中的对象类型具有通用性)。
关于这两种方法中哪一种更好或任何其他方法有什么建议吗?
最佳答案
Paul Stovell 创建了一个可编辑的集合适配器,它本身可能无法满足您的需求,但它应该为您提供一个创建合适的适配器/代理的良好起点。
关于WPF 绑定(bind)到代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540144/