我有许多实现自己的自定义更新通知的集合类。INotifyCollectionChanged
将这些通知转换为代理类中的实现应该很容易。
INotifyPropertyChanged
已经照顾好;这个问题只是关于收集代理。
因此,我正在寻找一种从 XAML 创建相对容易使用的代理的方法。对于子集合尤其如此。自定义集合类是无法修改(也无法派生)的库的一部分。也不可能用INotifyCollectionChanged
兼容的等价物替换集合类型,因为数据更新代码不在我的控制范围内。
我更喜欢与 SL 一起使用的解决方案,但这不是严格的要求。
到目前为止,我认为以下方法是可行的:
- 为添加属性
TypeDescriptionProvider
的集合类定义一个注册。Proxy
这允许绑定路径点入代理。从 XAML 的角度来看,这个解决方案似乎是最简单的,但与 SL 不兼容。 - 定义一个创建代理的值转换器。这将与 XAML 方面的更多工作一起工作。它应该适用于 SL。但是,如果路径上需要多次值转换,则可能需要“中间”视觉元素来保存值转换器结果。
我调查了ObjectDataProvider
,但我认为它不能在这种情况下使用(代理创建方法必须对容器中的对象类型是通用的)。
关于这两种方法中哪一种更好或任何其他方法的任何建议?