WPF绑定到代理

3
我有许多集合类,它们实现了自己的更新通知。将这些通知转换成代理类中的 INotifyCollectionChanged 实现应该很容易。 INotifyPropertyChanged 已经被处理好了;这个问题只是关于集合代理类的。
因此,我正在寻找一种相对容易从 XAML 中使用的方法来创建代理类,特别是对于子集合。这对于一个不能修改(也不能派生)的库中的自定义集合类来说是非常重要的。由于数据更新代码不在我的掌控之下,也无法用兼容于 INotifyCollectionChanged 的等效类型替换集合类型。
我希望能够提供一个适用于 Silverlight 的解决方案,但这并非严格要求。
到目前为止,我认为以下方法是可行的:
  • 定义一个 TypeDescriptionProvider,注册到集合类以添加一个 Proxy 属性。这样绑定路径就可以进入代理了。从 XAML 的角度来看,这个解决方案似乎最简单,但不兼容 SL。
  • 定义一个值转换器来创建代理。这需要从 XAML 端进行更多的工作。对于 SL 来说应该能够使用。然而,如果在路径上需要进行多次值转换,则可能需要“中间”可视元素来保存值转换器的结果。
我研究了 ObjectDataProvider,但我认为它不能在这种情况下使用(代理创建方法必须是容器中对象类型的通用方法)。
对于以上两种方法哪种更好或者是否有其他方法的建议?
2个回答

1

1

我决定采用一种类型转换器,它也是一个MarkupExtension,正如这篇博客文章所描述的那样。

MarkupExtension目前不受Silverlight支持,但在v5中将会得到支持。


@Maslow:它在存档中。 - Stephen Cleary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接