Вам нужно добавить некоторые данные в сетку данных, чтобы увидеть, что делает ваш код:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<XmlDataProvider x:Key="MockList" XPath="/MockObjects/*" >
<x:XData >
<MockObjects xmlns="">
<MockObject Name="Louis" Type="TTTT" Number="1" />
<MockObject Name="Joseph" Type="TTTT" Number="2" />
<MockObject Name="Papineau" Type="ZZZZ" Number="3" />
</MockObjects>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource MockList}}">
<DataGrid Background="Transparent" Name="MainDataGrid"
ItemsSource="{Binding Mode=Default, XPath=/MockObjects/MockObject}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Foreground="Blue" Header="AAA" Binding="{Binding XPath=@Name}" />
<DataGridTextColumn Foreground="Blue" Header="BBB" Binding="{Binding XPath=@Type}"/>
<DataGridTextColumn Foreground="Blue" Header="CCC" Binding="{Binding XPath=@Number}"/>
<DataGridTextColumn Foreground="Blue" Header="DDD"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

Кажется, что DataGridTextColumn Foreground устанавливает передний план данных, а не заголовок.
Кажется, что заголовок наследует свой передний план от DataGrid.Foreground. Сделайте следующее изменение в моем коде:
<DataGrid Background="Transparent" Name="MainDataGrid" Foreground="Blue"

Чтобы исследовать, как работает наследование значений (или если значение происходит из шаблона) Установите точку останова в вашей программе:

Запустите программу и дважды щелкните по сетке данных. QuickWatch MainDataGrid и откройте WPF Tree Visualizer


В TextBlock отображается столбец текст заголовка Он наследует синий цвет переднего плана от всех линий, отмеченных желтым. Только MainDataGrid не наследует значение, но задается локально в XAML. Treeview дает вам эту информацию, если вы щелкнете по MainDataGrid Foreground.
Примечание. Эта строка в вашем коде не компилируется
<DataGrid.Columns Foreground="Blue">
DataGrid.Columns не имеет свойства Foreground.
Хорошо известно, что правильная работа форматирования WPF DataGrid - это большая головная боль. Я рекомендую вам прочитать мою статью о codeproject Руководство по форматированию сетки данных WPF с использованием привязок , чтобы увидеть примеры для всех видов форматирования сетки данных.