Declined
Last Updated: 13 Oct 2026 12:20 by ADMIN
Martin Ivanov
Created on: 02 Oct 2026 15:11
Category: GridView
Type: Bug Report
0
GridView: Header cells and their filter buttons are not exposed to UI Automation clients

In RadGridView, column header cells and their filter buttons are not exposed to UI Automation (UIA) clients.

Workaround: Subclass DataCellsPresenter, override OnCreateAutomationPeer() to return a custom peer that walks the visual tree for GridViewHeaderCell children and exposes their real peers. This subclass must be wired in via a retemplated GridViewHeaderRow (swap the DataCellsPresenter template part).

public class FixedDataCellsPresenterAutomationPeer : FrameworkElementAutomationPeer
{
    public FixedDataCellsPresenterAutomationPeer(FixedDataCellsPresenter owner)
        : base(owner)
    {
    }

    protected override List<AutomationPeer> GetChildrenCore()
    {
        var children = new List<AutomationPeer>();
        CollectHeaderCellPeers(this.Owner, children);
        return children;
    }

    protected override AutomationControlType GetAutomationControlTypeCore()
    {
        return AutomationControlType.Header;
    }

    private static void CollectHeaderCellPeers(DependencyObject parent, List<AutomationPeer> result)
    {
        int count = VisualTreeHelper.GetChildrenCount(parent);
        for (int i = 0; i < count; i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i);
            if (child is GridViewHeaderCell headerCell)
            {
                var peer = UIElementAutomationPeer.CreatePeerForElement(headerCell);
                if (peer != null)
                {
                    result.Add(peer);
                }
            }
            else
            {
                CollectHeaderCellPeers(child, result);
            }
        }
    }
}

 

  public class FixedDataCellsPresenter : DataCellsPresenter
  {
      protected override AutomationPeer OnCreateAutomationPeer()
      {
          return new FixedDataCellsPresenterAutomationPeer(this);
      }
}

 

<Window.Resources>
    <ControlTemplate x:Key="FixedGridViewHeaderRowTemplate" TargetType="grid:GridViewHeaderRow">
          <!-- other elements -->
            <local:FixedDataCellsPresenter x:Name="PART_DataCellsPresenter"
                                           AutomationProperties.Name="Header Cells Presenter"
                                           Grid.Row="1"
                                           Grid.Column="3" />
           <!-- other elements -->
    </ControlTemplate>
    <Style TargetType="grid:GridViewHeaderRow">
        <Setter Property="Template" Value="{StaticResource FixedGridViewHeaderRowTemplate}" />
    </Style>
</Window.Resources>

 

1 comment
ADMIN
Martin Ivanov
Posted on: 13 Oct 2026 12:20

The original reason behind the issue seems to be the following bug in .NET 8. Find a workaround in the following KB article.

Regards,
Martin Ivanov
Progress Telerik

Unlock smarter data exploration in RadGridView with AI-powered features. Enable natural language queries and help users uncover insights faster.

Learn more about RadGridView AI features