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