Как сделать строку жирным в WPF DataGrid - PullRequest
0 голосов
/ 07 января 2019

У меня есть DataGrid, содержащий четыре строки, и мне нужно сделать текст в последней строке жирным, чтобы лучше отделить их от строк выше.

Я попробовал методы, доступные в вопросе Как изменить одну строку таблицы данных FontWeights на Bold? , но мне не удалось заставить ее работать.

Это код, который я пробовал; его выполнение приводит к ошибке, поскольку row равно нулю.

Setter bold = new Setter(TextBlock.FontWeightProperty, FontWeights.Bold, null);
DataGridRow row = (DataGridRow)DG_PPC.ItemContainerGenerator.ContainerFromIndex(3);
Style newStyle = new Style(row.GetType());
newStyle.Setters.Add(bold);
row.Style = newStyle;

Буду признателен за любую помощь. Спасибо!

XAML-код:

<DataGrid x:Name="DG_PPC" HorizontalAlignment="Left" Height="115" Margin="661,-6,0,0"
HeadersVisibility="Column" VerticalAlignment="Top" Width="726.25"
Loaded="DataGrid_PPC_Loaded" RowHeaderWidth="0" AutoGenerateColumns="False"
CanUserSortColumns="False" CanUserReorderColumns="False" FontSize="12" IsReadOnly="True">

1 Ответ

0 голосов
/ 10 января 2019

Я нашел другой способ сделать это, совместимый с моим кодом. Вот решение, если кому-то понадобится нечто подобное.

app.xml:

<Application.Resources>
  <local:FontWeightConverter x:Key="FontWeightConverter"/>
</Application.Resources>

XAML:

<DataGrid.RowStyle>
  <Style TargetType="{x:Type DataGridRow}">
    <Setter Property="FontWeight" Value="{Binding RelativeSource={RelativeSource Self},
      Path=Item.XYZ, Converter={StaticResource FontWeightConverter}}"/>
  </Style>
</DataGrid.RowStyle>

Код:

class FontWeightConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string name = (string)value;
        if (name.Equals("Δ"))
            return FontWeights.Bold;
        else
            return FontWeights.Normal;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
...