2

我有许多集合类实现他们自己的自定义更新通知。将这些通知转换为代理类中的INotifyCollectionChanged实现应该非常容易。WPF绑定到代理

INotifyPropertyChanged已经被照顾;这个问题只是关于收集代理。

所以,我正在寻找的是一种创建代理的方式,它比较容易在XAML中使用。子集合尤其如此。自定义集合类是不能修改(或派生自)的库的一部分。也不可能用INotifyCollectionChanged兼容的等价物替换集合类型,因为数据更新代码不在我的控制范围之内。

我更喜欢与SL一起工作的解决方案,但这不是一个严格的要求。

到目前为止,我相信下面的方法是可行的:

  • 定义,增加了一个Proxy属性集合类注册的TypeDescriptionProvider。这允许绑定路径进入代理。从XAML的角度来看,这个解决方案似乎最简单,但不是SL兼容的。
  • 定义一个创建代理的值转换器。这将在XAML方面做更多的工作。它应该适用于SL。但是,如果路径上需要多个值转换,则可能需要“中间”视觉元素来保存值转换器结果。

我看着ObjectDataProvider,但我不认为它可以在这种情况下使用(代理创建方法必须对容器中的对象类型通用)。

有关这两种方法哪一种更好的建议或任何其他方法?

回答

1

我决定用一个类型转换器,这也是一个MarkupExtension,由this blog post描述前进。

MarkupExtension目前不受Silverlight支持,但它将在v5中。

+1

link is dead =( – Maslow

+0

@Maslow:它在[存档]中(https://web.archive.org/web/20100424070706/http://blog.wpfwonderland.com/2010/04/15/simplify - 您的结合转换器上带有一个定制的标记扩展/)。 –