2012-07-09 48 views
1

边使用转换器,我希望绑定到整个对象,并将其发送到转换器来使用,而不是绑定到每个单独的属性,所以我可以这样做:结合对象不是财产

Order thisOrder = (Order)values[0]; 

(注意,它是一个multibinding,其他值都被派去除了thisOrder对象。现在订单类实现INotifyPropertyChanged接口,并提出了相应的事件时,其任何属性的改变,该转换器需要访问多个属性虽然它实际上只需要重新运行其中一个属性的改变,有没有办法绑定到整个对象,以便如果任何属性发生变化,转换器将被评估为增益,还是只绑定到一个属性,但让对象的其余部分也可用作转换器的参数?

详细例子: 订单有以下字段:

  • ID
  • MarketPrice
  • 名称

当MarketPrice变化,转换器需要重新计算基于 ID和市场价。据我所知,目前还没有干净地解决了这一

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

回答

0

: 目前,结合应用在xamDataGrid的DataRecordCellArea,如下所示。我建议你添加两个绑定,一个到Order对象,以便您可以访问所有的值,另外的MarketPrice,使装订的更新是该属性的变化。然后您可以通过第一个绑定访问对象和所有属性,并获得相应的更新。

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

+0

希望我想到了第一种方法!虽然从理论角度来看,这让我在实践层面上很容易让事情完成。我会再等几天来看看是否会出现一个不太危险的解决方案,否则我会执行此操作。 – Neil 2012-07-10 10:38:01