単一のセル選択のみを許可するように構成された 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 が最初にレンダリングされるとき (選択がないとき) にのみ呼び出されるようです。セルが選択された後に呼び出されないので、何が欠けていますか?