0

単一のセル選択のみを許可するように構成された WPF DataGrid があります。

SelectionMode="Single"
SelectionUnit="Cell"

私がやろうとしているのは、現在選択されているセルを含む行の行ヘッダーの背景を変更することです。これまでのところ、次のことを考え出しましたが、機能していません。

バックグラウンド プロパティを複数値コンバーターにバインドする XAML スタイルを次に示します。コンバーターは、ヘッダーDataGridRow :-のSelectedCellsプロパティにバインドされています。DataGrid

<Style TargetType="{x:Type DataGridRowHeader}">
    <Setter Property="Background">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource dataGridHeaderBackgroundConverter}" Mode="OneWay">
                <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}" />
                <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}" 
                         Path="SelectedCells"
                         Mode="OneWay"/>
            </MultiBinding>
        </Setter.Value>
    </Setter>
</Style>

マルチコンバーターのConvertメソッドは次のようになります (簡潔にするために null チェック コードを削除しました):-

var row = values[0] as DataGridRow;
var selectedCells = values[1] as IList<DataGridCellInfo>;
var selectedCell = selectedCells[0];

return selectedCell.Item == row.Item ? Colors.Red : Colors.LightGray;

このメソッドは、DataGrid が最初にレンダリングされるとき (選択がないとき) にのみ呼び出されるようです。セルが選択された後に呼び出されないので、何が欠けていますか?

4

2 に答える 2