2

コンバーターを使用しているときに、個々のプロパティのそれぞれにバインドするのではなく、オブジェクト全体にバインドしてコンバーターに送信して使用したいので、これを行うことができます。

Order thisOrder = (Order)values[0];

(マルチバインディングであり、thisOrderオブジェクト以外に他の値が送信されていることに注意してください。OrderクラスはINotifyPropertyChangedインターフェイスを実装し、プロパティのいずれかが変更されたときに適切なイベントを発生させます。コンバーターはOrderの複数のプロパティにアクセスする必要があります。 、実際にはプロパティの1つへの変更で再実行する必要があるだけですが、オブジェクト全体にバインドして、プロパティのいずれかが変更された場合にコンバーターが再度評価されるようにする方法、または1つのプロパティのみにバインドする方法はありますか?オブジェクトの残りの部分は、コンバーターが機能するパラメーターとしても使用できますか?

例の詳細:注文には次のフィールドがあります。

  • ID
  • 市場価格
  • 名前

MarketPriceが変更された場合、コンバーターはIDとMarketPriceに基づいて再計算する必要があります。現在、バインディングは次のようにxamDataGridのDataRecordCellAreaに適用されます。

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

1 に答える 1

0

私の知る限り、現在これに対する明確な解決策はありません。2 つのバインディングを追加することをお勧めします。1 つはOrderオブジェクトに追加してすべての値にアクセスできるようにし、もう 1 つは に追加MarketPriceして、そのプロパティが変更された場合にバインディングが更新されるようにします。次に、最初のバインディングを介してオブジェクトとすべてのプロパティにアクセスし、それぞれの更新を取得します。

これはかなりハックな別のメソッドです。インスタンスをPropertyChanged所有するクラスでサブスクライブし、インスタンス内の が変更されるたびにインスタンス プロパティOrderの変更通知を発生させることができます。私はこれを避けますが、2 番目のバインドを取り除くことができます。OrderMarketPrice

于 2012-07-10T00:06:03.907 に答える