1

特定のセルの内容の値を指定して、行全体ではなく、DataGridCellの前景色を変更しようとしています。たとえば、セルの日付値が古くなっている場合は、前景を赤に設定します。私は、MultiBindingを使用してデータグリッドから2つの値を抽出し、IMultiValueConverterを実装する値コンバーターを介してそれを解析しているところです。

つまり、コンバーター自体に入る必要がないので、次のXAMLを作成しました。

<GlobalTasks:CellHighlighterConverter x:Key="cellHighlighterConverter"/>

<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>

次に、データグリッドに追加しました:CellStyle="{StaticResource CellHighlighterStyle}"

これで、コンバーターは最初のValue[0]プロパティをDataGridCellと見なしますが、2番目の値はある種のDependencyPropertyで構成されています。実際に行を取得したいときに、デフォルトまたはダミーのプロパティを作成したようなものです。実際、私は本当にその行に関連付けられたクラスオブジェクトを取得したいと思います。私のDataGridはにバインドされていList<of a class object>ます。

私は数インチ離れていると確信しています。フィールドの値を抽出できるようにDataGrid行を解析するか、返したい色を返すためにその行または列自体にバインドされたオブジェクトを解析するにはどうすればよいですか?または、値を指定してDataGridセルのプロパティを選択的に変更するためのより良い方法はありますか?

4

1 に答える 1

1

セルのDataContextは行のデータオブジェクトである必要があります。2番目のバインディングを次のように変更してみてください。

<Binding />

これは、DataContextに直接バインドします。

于 2011-05-02T17:17:36.760 に答える