2

在使用转换器时,我想绑定到整个对象并将其发送给转换器使用,而不是绑定到每个单独的属性,所以我可以这样做:

Order thisOrder = (Order)values[0];

(注意,它是一个多重绑定,除了 thisOrder 对象之外还发送了其他值。现在 Order 类实现了 INotifyPropertyChanged 接口,并在其任何属性发生更改时引发适当的事件。转换器需要访问 Order 的多个属性,虽然它实际上只需要重新运行对其中一个属性的更改.有没有办法绑定到整个对象,以便如果任何属性发生更改,转换器会再次评估,或者只绑定到一个属性,但是对象的其余部分是否也可用作转换器工作的参数?

示例详细信息:订单具有以下字段:

  • ID
  • 市场价
  • 姓名

当 MarketPrice 发生变化时,转换器需要根据 ID 和 MarketPrice 重新计算。目前,绑定应用于 xamDataGrid 的 DataRecordCellArea,如下所示:

<MultiBinding Converter="{StaticResource MarketPositionToBrushConverter}">
     <Binding RelativeSource="{RelativeSource Self}" Path="Record.DataItem"/>
...
</MultiBinding>
4

1 回答 1

0

据我所知,目前没有干净的解决方案。我建议您添加两个绑定,一个到Order对象,以便您可以访问所有值,另一个到对象,MarketPrice以便在该属性更改时绑定更新。然后,您可以通过第一个绑定访问对象和所有属性,并获得相应的更新。

这是另一种相当 hack 的方法,您可以PropertyChanged在拥有Order实例的类中订阅,然后在实例中发生更改Order时为实例属性触发更改通知MarketPrice。我会避免这样做,但它可以让你摆脱第二个绑定。

于 2012-07-10T00:06:03.907 回答