If I understand the situation correctly it would perhaps be easiest to use window level resource definition and set the visual effects over there. Something like
<Window.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.Header>
<GridViewColumnHeader Margin="-3,0,0,0" Tag="Col 1" BorderThickness="0" Width="auto" Height="40" Content="Col 1" />
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.Header>
<GridViewColumnHeader Margin="-3,0,0,0" Tag="Col 2" BorderThickness="0" Width="auto" Height="40" Content="Col 2"/>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
If you want a more complex visualization for the header, then consider using a ControlTemplate. For more information, see
How to create a template - WPF .NET | Microsoft Docs[
^]
EDIT: Modified version using control template
<Window.Resources>
<ControlTemplate x:Key="CustomHeader" TargetType="GridViewColumnHeader">
<Grid Background="{TemplateBinding Background}" Height="40">
<TextBlock Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Tag}" VerticalAlignment="Center" />
<Thumb x:Name="PART_HeaderGripper" HorizontalAlignment="Right" Margin="0" Width="1"/>
</Grid>
</ControlTemplate>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="#EFEFEF"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Green"/>
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.Header>
<GridViewColumnHeader Template="{StaticResource CustomHeader}" Margin="-3,0,0,0" BorderThickness="0" Tag="Col 1" />
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.Header>
<GridViewColumnHeader Template="{StaticResource CustomHeader}" Margin="-3,0,0,0" BorderThickness="0" Tag="Col 2" />
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>