マルチバインディングを使用してWPF Datagridセルのフォアグラウンド色の変更に問題
-
28-10-2019 - |
質問
特定のセル含有量の値を考えると、列全体ではなく、Datagridcellのフォアグラウンド色を変更しようとしています。たとえば、セルの日付値が古くなっている場合は、前景を赤に設定したいと思います。私は、マルチバインディングを使用してデータグリッドから2つの値を抽出し、ImultivalueConverterを実装する値コンバーターを介して解析している場所です。
要するに、そしてその後、コンバーター自体に入る必要がないので、次のXAMLを書きました。
<Style x:Key="CellHighlighterStyle">
<Setter Property="my:ExtendedDataGrid.Foreground">
<Setter.Value>
<MultiBinding Converter="{StaticResource cellHighlighterConverter}">
<MultiBinding.Bindings>
<Binding RelativeSource="{RelativeSource self}"/>
<Binding Path="Row" Mode="OneWay"/>
</MultiBinding.Bindings>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
I then added to my Datagrid :
CellStyle = "{staticResource cellhighlighterstyle}" `。
今、私のコンバーターは最初のものを見ます Value[0]
datagridcellとしてのプロパティですが、2番目の値は、ある種のMADE UP DECONDENCEPROPERTYです。実際に行を取得したいときに、デフォルトまたはダミーのプロパティを作成したようなものです。実際、私は本当にその行に関連付けられたクラスオブジェクトを取得したいと思います。私のデータグリッドはaにバインドされています List<of a class object>
.
私は数インチ離れていると確信しています。 Datagrid行を解析して、フィールドの値を抽出できるようにするにはどうすればよいですか、またはその行または列自体に縛られたオブジェクトを抽出して、返したい色を返しますか?または、値を与えられたDatagridセルのプロパティを選択的に変更するためのより良い方法はありますか?
解決
セルのデータコンテキストは、行のデータオブジェクトである必要があります。これに2番目のバインディングを変更してみてください。
<Binding />
DatAcontextに直接バインドします。