Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定到代理_Wpf_Proxy_Binding_Objectdataprovider_Typedescriptionprovider - Fatal编程技术网

WPF绑定到代理

WPF绑定到代理,wpf,proxy,binding,objectdataprovider,typedescriptionprovider,Wpf,Proxy,Binding,Objectdataprovider,Typedescriptionprovider,我有许多集合类,它们实现自己的自定义更新通知。在代理类中将这些通知转换为INotifyCollectionChanged实现应该非常容易 INotifyPropertyChanged已被处理;这个问题只是关于集合代理的 所以,我要寻找的是一种从XAML创建代理的方法,它相对容易使用。对于子集合来说尤其如此。自定义集合类是无法修改(或从中派生)的库的一部分。也不可能将集合类型替换为与INotifyCollectionChanged-兼容的等价物,因为数据更新代码不在我的控制范围内 我更喜欢使用SL

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

INotifyPropertyChanged
已被处理;这个问题只是关于集合代理的

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

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

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

  • 为添加代理属性的集合类定义注册的
    TypeDescriptionProvider
    。这允许绑定路径点到代理中。从XAML的角度来看,这个解决方案似乎最简单,但与SL不兼容
  • 定义创建代理的值转换器。这需要XAML方面做更多的工作。它应该适用于SL。但是,如果路径上需要进行多个值转换,则可能需要“中间”可视元素来保存值转换器结果
我研究了
ObjectDataProvider
,但我认为它不能用于这种情况(代理创建方法必须是容器中对象类型的通用方法)


关于这两种方法中哪一种更好,或者任何其他方法,有什么建议吗?

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


我决定继续使用类型转换器,它也是一个
标记扩展
,如所述

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

@Maslow:它在。