Предполагая, что вам нужно выделить заголовок столбца gid данных на основе выбранной \ выделенной ячейки ....
Создайте стиль DataGrid
для DataGridColumnHeader
. В стиль входит триггер данных, который проверяет, равны ли содержимое заголовка столбца и содержимое заголовка столбца текущей ячейки ... это означает, что заголовок столбца принадлежит столбцу, которому также принадлежит текущая ячейка. Если это так, мы меняем цвет фона заголовка.
<toolkit:DataGrid x:Name="MyDataGrid"
IsReadOnly="True"
AutoGenerateColumns="False">
<toolkit:DataGrid.Resources>
<local:EqualityConverter x:Key="EqualityConverter"/>
<Style TargetType="{x:Type toolkit:DataGridColumnHeader}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource EqualityConverter}">
<Binding Path="CurrentCell.Column.Header"
RelativeSource="{RelativeSource
AncestorType={x:Type toolkit:DataGrid}}"/>
<Binding Path="Content"
RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</toolkit:DataGrid.Resources>
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Header="Key"
Binding="{Binding Key, Mode=OneWay}"></toolkit:DataGridTextColumn>
<toolkit:DataGridTextColumn Header="Value"
Binding="{Binding Value, Mode=OneWay}"></toolkit:DataGridTextColumn>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
EqualityConverter
- это конвертер с несколькими привязками, который проверяет, равны ли связанные значения ...
public class EqualityConverter : IMultiValueConverter
{
public object Convert(
object[] values,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
if (values != null)
{
for (var i = 1; i < values.Count(); i++)
{
if (values[i] == null || !values[i].Equals(values[i-1]))
{
return false;
}
}
return true;
}
return false;
}
public object[] ConvertBack(
object value,
Type[] targetTypes,
object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Дайте мне знать, если это поможет.