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>
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
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();
}
}
Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.EnsureSourceProperty(Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition propertyDefinition) Line 3279 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.RetrieveCurrentContextPropertyValue(Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition propertyDefinition) Line 3207 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridField.CurrentContextPropertyValue.get() Line 70 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridField.SetDataContextWhenEditorAttributeIsSet(System.Windows.FrameworkElement content, Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition contextPropertyDefinition) Line 394 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridFieldContentPresenter.PrepareEditor() Line 184 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridFieldContentPresenter.BeginEdit() Line 93 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.BeginEditSafe(Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridField field) Line 1243 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.EnsureFieldForEditOperation(Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition propertyDefinition, System.Action<Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridField> finishedCallback, System.Action<Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition> failedCallback) Line 1194 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.BeginEdit(Telerik.Windows.Controls.Data.PropertyGrid.PropertyDefinition propertyDefinition) Line 1224 C#
Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.RadPropertyGrid.BeginEdit() Line 1204 C# Telerik.Windows.Controls.Data.dll!Telerik.Windows.Controls.Data.PropertyGrid.PropertyGridFieldContentPresenter.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e) Line 57 C#<telerik:RadPropertyGrid EditMode="Single" RenderMode="Flat" EnableEditorCaching="False" />The keyboard arrow selection doesn't select tabs, just moves the focus. This happens when the content area of RadRibbonView is minimizable and open.
To work this around, manually select the focused tab on key down.
private void RadRibbonView_PreviewKeyDown(object sender, KeyEventArgs e)
{
var ribbon = (RadRibbonView)sender;
if (ribbon.IsMinimized && (e.Key == Key.Left || e.Key == Key.Right))
{
var focusedHeader = Keyboard.FocusedElement as RadRibbonTab;
if (focusedHeader != null && ribbon.SelectedItem != focusedHeader)
{
ribbon.SelectedItem = focusedHeader;
e.Handled = false;
}
}
}
RadSyntaxEditor, while inside of a virtualized RadGridView, stealings focus immediately upon loading. It appears to do this automatically and there is no configuration to disabling. Meaning when scrolling in a RadGridView with virtualized rows, when a row with the RadSyntaxEditor materializes it will automatically steal focus from other elements.
This can be worked around using custom behavior that discards the first preview keyboard focus event that it receives.
private void onPreviewGotKeyboardFocus(object s, KeyboardFocusChangedEventArgs e)
{
if (!this.SuppressAutoFocus || _wasFocusSuppressed)
{
return;
}
_wasFocusSuppressed = true;
e.Handled = true;
}The offending line of code is this in RadSyntaxEditor.InitActiveEditorPresenter:
if (flag)
{
base.Dispatcher.BeginInvoke((Action)delegate
{
Focus();
});
}Request: Add a dependency property to allow opting-out of this default behavior. The above workaround works, but is a bit hacky for something that should probably be built-in.
The automation properties are not read by screen readers (Windows Narrator).
Implement the export of notes (footnote, endnote) in the PdfFormatProvider of the RadRichTextBox.