【问题标题】:WPF Binding to ProxyWPF 绑定到代理
【发布时间】:2023-03-20 15:55:01
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: wpf proxy binding objectdataprovider typedescriptionprovider


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我决定继续使用也是MarkupExtension 的类型转换器,如this blog post 所述。

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

      【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 2023-03-03
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多