3

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

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

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

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

到目前为止,我认为以下方法是可行的:

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

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

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

4

2 回答 2

1

Paul Stovell 创建了一个可编辑的集合适配器,它本身可能无法满足您的需求,但它应该为您提供一个创建适当适配器/代理的良好起点。

http://www.paulstovell.com/editable-collection-adapter

于 2011-06-30T20:25:19.287 回答
1

我决定继续使用也是 的类型转换器MarkupExtension,正如这篇博文所述。

MarkupExtensionSilverlight 目前不支持,但它会在 v5 中。

于 2011-07-07T20:12:27.560 回答