我有许多集合类实现他们自己的自定义更新通知。将这些通知转换为代理类中的INotifyCollectionChanged
实现应该非常容易。WPF绑定到代理
INotifyPropertyChanged
已经被照顾;这个问题只是关于收集代理。
所以,我正在寻找的是一种创建代理的方式,它比较容易在XAML中使用。子集合尤其如此。自定义集合类是不能修改(或派生自)的库的一部分。也不可能用INotifyCollectionChanged
兼容的等价物替换集合类型,因为数据更新代码不在我的控制范围之内。
我更喜欢与SL一起工作的解决方案,但这不是一个严格的要求。
到目前为止,我相信下面的方法是可行的:
- 定义,增加了一个
Proxy
属性集合类注册的TypeDescriptionProvider
。这允许绑定路径进入代理。从XAML的角度来看,这个解决方案似乎最简单,但不是SL兼容的。 - 定义一个创建代理的值转换器。这将在XAML方面做更多的工作。它应该适用于SL。但是,如果路径上需要多个值转换,则可能需要“中间”视觉元素来保存值转换器结果。
我看着ObjectDataProvider
,但我不认为它可以在这种情况下使用(代理创建方法必须对容器中的对象类型通用)。
有关这两种方法哪一种更好的建议或任何其他方法?
link is dead =( – Maslow
@Maslow:它在[存档]中(https://web.archive.org/web/20100424070706/http://blog.wpfwonderland.com/2010/04/15/simplify - 您的结合转换器上带有一个定制的标记扩展/)。 –