我有一个 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
方法看起来像这样(我删除了空检查代码以保持简洁):-
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 时(没有选择时)被调用。选择单元格后不会调用它,所以我错过了什么?