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