Skip to content

DataGrid column header style not congruent with .NET 9 / Win 11 styles #117

Description

@fraluderin

I have a simple window with a DataGrid inside.
The project is targeting .NET 9 and Win 11 theming is enabled by adding the resources in App.xaml file:

  <Application.Resources>
      <ResourceDictionary>
          <ResourceDictionary.MergedDictionaries>
              <ResourceDictionary Source="pack://application:,,,/PresentationFramework.Fluent;component/Themes/Fluent.xaml" />
          </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
  </Application.Resources>

Column headers are displayed without taking into account the Win 11 styling.

Current behavior:

Image

Expected behavior (I got this by removing dgx:DataGridFilter.IsAutoFilterEnabled="True" from my DataGrid XAML):

Image

Note that the headers are displayed but the lack of contrast make them almost unreadable.
I'm opening this issue, but I'm ready to forward it to WPF repo if this is not a DataGridExtension-related issue.

Activity

  1. tom-englert commented on Dec 9, 2024

    @tom-englert
    Collaborator

    If you use custom styles for the data grid, you must use custom styles for the headers, too

  2. fraluderin commented on Dec 11, 2024

    @fraluderin
    Author

    So this could be an issue from the Win 11 style pack I added in my resources? Should I report this in WPF repo?

  3. tom-englert commented on Dec 11, 2024

    @tom-englert
    Collaborator

    Even if this custom styles are provided by WPF, they are still custom styles, affecting only the controls included in these custom styles.

    DGX styles rely on the SystemColors, which are usually not updated by such custom style components - you have to do it by your own:

    <Border Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
    BorderThickness="1"
    MinWidth="100"
    BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}">
    <DockPanel KeyboardNavigation.DirectionalNavigation="Cycle">

    See e.g. here:
    https://github.com/icsharpcode/ILSpy/blob/e652490cce4a3f5ec54b9c858807418f02e39ae0/ILSpy/Themes/Base.Dark.xaml#L41-L49

  4. Brains commented on Jan 8, 2025

    @Brains

    I am using MahApps.Metro and needed this default style everywhere for old .NET 4.6.2 target:

    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MahApps.Styles.DataGridColumnHeader}"/>

    For .NET 8 I did not require it anymore though (no idea why), at least so far.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions