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>
In RadGanttView, the drag reorder visual element position indicators ('Before', 'After', and 'Inside') are not translated according to the application's UI culture settings (e.g., German), remaining displayed in English because they are hardcoded in the element's template.
To work this around, create a custom DragReorderTemplate and apply it via the CueTemplateSelector of GanttDragResizeVisualCue. This can be applied via an implicit style defined in App.xaml.
<Style TargetType="telerik:GanttDragResizeVisualCue">
<Setter Property="CueTemplateSelector">
<Setter.Value>
<telerik:GanttDragVisualCueContentTemplateSelector DragTemplate="{StaticResource GanttDragResizeVisualCueTemplate}"
ResizeTemplate="{StaticResource GanttDragResizeVisualCueTemplate}"
CreateDependencyTemplate="{StaticResource GanttCreateDependencyTemplate}"
DragReorderTemplate="{StaticResource CustomGanttDragReorderTemplate}" />
</Setter.Value>
</Setter>
</Style>
When the users move the image (evaluated as a result of the field) using the document selection, the field is removed from the document and the image is duplicated.
HTML import fails when an image has an align tag set to a value different from center
<img align="top"
width="170" height="61" />
TooltipContentTemplate does not apply on Windows11/Windows Server 2025
Tint transformation function is used to transform Device N color in Alternate colorspace.
The style of the table fallbacks to the default one and when the content of a cell is deleted, the current font family and font size are changed. The scenario is working as expected in versions before R3 2016.
When an RTF document contains table inside table in the header or in the footer, the document cannot be imported due to NullReferenceException. In the case of RadRichTextBox the exception is handled, but it's not when RtfFormatProvider is used directly. The bug is regression in 2016 R3.
ArgumentException: WebView2 was already initialized with a different CoreWebView2Environment. Check to see if the Source property was already set or EnsureCoreWebView2Async was previously called with different values.
at Microsoft.Web.WebView2.Wpf.WebView2Base.EnsureCoreWebView2Async(CoreWebView2Environment environment, CoreWebView2ControllerOptions controllerOptions)
The committed RadSpreadsheetRibbon_style.xaml renders the AI group unconditionally:
<telerikRibbon:RadRibbonGroup Header="AI">
Workaround:
private void HideAIButton()
{
var aiButton = this.spreadsheetRibbon
.ChildrenOfType<RadRibbonButton>()
.FirstOrDefault(b => b.Text == "AI Tools");
if (aiButton == null)
{
return;
}
var aiGroup = aiButton.ParentOfType<RadRibbonGroup>();
if (aiGroup != null)
{
aiGroup.Visibility = Visibility.Collapsed;
}
else
{
aiButton.Visibility = Visibility.Collapsed;
}
}
The settings of the empty paragraphs in the document fallback to the default document settings (Verdana). The EnumerateChilderOfType() method can be used to traverse all the paragraphs in the document and apply them the same font family as a workaround.
When GridViewClipboardPasteMode is set to AllSelectedCells and a single clipboard value is pasted into more than one selected cell, RadGridView updates the cell values but does not re-evaluate live grouping for the edited items - rows remain under their previous group header until an explicit Rebind()/refresh.
Pasting into a single cell at a time re-groups correctly.
To work this around, call the CommitEdit and EditItem methods of RadGridView for each row data item in which data was pasted. You can do that in the Pasted event handler:
private void RadGridView_Pasted(object sender, RadRoutedEventArgs e)
{
var editableView = (IEditableCollectionView)this.gridView.Items;
var affectedItems = this.gridView.SelectedCells.Select(c => c.Item).Distinct().ToList();
foreach (var item in affectedItems)
{
editableView.EditItem(item);
editableView.CommitEdit();
}
}