Unplanned
Last Updated: 26 Dec 2025 12:14 by Martin Ivanov

The fill selection stops working, after a filtering is applied and the currently selected cell is filtered out (it gets hidden). This prevents from displaying the fill selection cross displayed when you hover the bottom right corner of a selected cell. Any further changes in the selection doesn't re-enable the selection fill feature.

To work this around, you can set the IsEnabled property of the FillSelection on selection changed.

private RadWorksheetEditor activeWorksheetEditor;

public MainWindow()
{
  InitializeComponent();

  this.spreadsheet.ActiveSheetEditorChanged += (s, e) =>
  {
 if (activeWorksheetEditor != null)
 {
 activeWorksheetEditor.Selection.SelectionChanged -= Selection_SelectionChanged;
 }

 activeWorksheetEditor = this.spreadsheet.ActiveWorksheetEditor;
 activeWorksheetEditor.Selection.SelectionChanged += Selection_SelectionChanged;
  };
}

private void Selection_SelectionChanged(object? sender, EventArgs e)
{
  this.spreadsheet.ActiveWorksheetEditor.Selection.FillSelection.IsEnabled = true;
}

Unplanned
Last Updated: 25 Dec 2025 16:34 by Martin Ivanov
The caret position is wrong on down arrow key press when moving between two lines separated by a line break. This happens when you type longer text in the first line and then press the down arrow key to move to the next line, which is shorter. The caret should be placed at the end of the second line, but instead it is positioned few characters before the end of the line.
Unplanned
Last Updated: 25 Dec 2025 13:25 by Martin Ivanov

The line break symbol (Shift+Enter) is treated as a text character and it gets measured in the document position calculations executed when you click at the end of the document (somewhere after the line break symbol which ends the line). 

This causes two visual issues. The first one is that the caret goes after the line break symbol, which means that when ShowFormattingSymbols is False an empty space (non-existing in the document) is added at the end of the line. Even if ShowFormattingSymbols=true and the line break symbol gets display, it is not expected for ,the caret to get positioned after the symbol.

The second issues is that, when you start typing after you click at the end of the line, the caret position is corrected, but this leads to a jumps of the caret with one character to the left, which brings an unpleasant visual glitch.

To work this around, you can create a custom MouseSelectionHandler and override its RegisterDocumentMouseDown method. This will allow you to check if the caret is placed after the line break symbol and manually update the caret position if that is the case.

public class CustomMouseSelectionHandler : MouseSelectionHandler
{
    private IDocumentEditorPresenter presenter;
    private RadDocument document;

    public CustomMouseSelectionHandler(RadDocument document, IDocumentEditorPresenter presenter) 
        : base(document, presenter)
    {
        this.presenter = presenter;
        this.document = document;
    }      

    public override void RegisterDocumentMouseDown(bool ctrlPressed, bool shiftPressed, Point position, UIElement originalSource = null, SourceType source = SourceType.Mouse)
    {
        base.RegisterDocumentMouseDown(ctrlPressed, shiftPressed, position, originalSource, source);
        var box = this.document.CaretPosition.GetCurrentSpanBox();
        if (box != null && box.AssociatedSpan.Text == "¬")
        {
            document.CaretPosition.MoveToCurrentLineEnd();
        }
    }
}
To register the custom handler, use the MouseSelectionHandler property of the ActiveEditorPresenter.

 this.richTextBox.Loaded += (s, args) =>
 {
     var presenter = (DocumentPresenterBase)this.richTextBox.ActiveEditorPresenter;
     presenter.MouseSelectionHandler = new CustomMouseSelectionHandler(this.richTextBox.Document, presenter);
 };

Unplanned
Last Updated: 25 Dec 2025 08:29 by ADMIN

RadHighlightTextBlock — Text binding stops updating when HighlightText is used

.Net framework 4.7.2
Telerik WPF Version 2025.1.211.462

Detailed Information

When developing an application using Telerik's RadHighlightTextBlock control, I encountered the following issues:

When attempting to dynamically update the control's `Text` and `HighlightText` properties through data binding, the control fails to display the updated content correctly. Specifically:

  1. After updating property values in the ViewModel, RadHighlightTextBlock doesn't display the new text content
  2. Even if the text updates, the highlighted portion doesn't correctly reflect the new HighlightText value
  3. The control's UI display is inconsistent with the actual values in the data model

I have confirmed that:

  • Data binding paths are correct
  • ViewModel implements INotifyPropertyChanged
  • Other controls bound to the same data source update correctly

I suspect this might be an issue with RadHighlightTextBlock's internal update handling mechanism, or it may require specific settings to properly handle dynamic update scenarios.

My Code:

MainWindow.xaml

<Window x:Class="RadHighlightTextBlock_Issue.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:RadHighlightTextBlock_Issue"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <local:MyViewModel x:Key="MyViewModel"/>
    </Window.Resources>
    <StackPanel>
        <telerik:RadHighlightTextBlock x:Name="highlightTextBlock" 
                                       Text="{Binding Source={StaticResource MyViewModel}, Path=SelectedItem.Description}"
                                      HighlightText="{Binding Source={StaticResource MyViewModel}, Path=SelectedItem.HighlightText}"
                                      HighlightForeground="Red"
                                      HighlightBackground="Yellow"
                                      FontSize="16"
                                      Margin="10"/>
        <telerik:RadButton Content="Content0" Command="{Binding Source={StaticResource MyViewModel}, Path=C0Command}"/>
        <telerik:RadButton Content="Content1" Command="{Binding Source={StaticResource MyViewModel}, Path=C1Command}"/>
    </StackPanel>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Input;

namespace RadHighlightTextBlock_Issue
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void RadButton_Click(object sender, RoutedEventArgs e)
        {
            highlightTextBlock.Text = "This is a sample text to demonstrate the RadHighlightTextBlock control.";
        }

        private void RadButton_Click_1(object sender, RoutedEventArgs e)
        {
            highlightTextBlock.Text = "This is another sample text for the second button.";
        }
    }

    public class MyViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<DataItem> Items { get; set; }
        public MyViewModel()
        {
            Items = new ObservableCollection<DataItem>
            {
                new DataItem { HighlightText = "sample", Description = "This is a sample description." },
                new DataItem { HighlightText = "second", Description = "This is the second item description." },
                new DataItem { HighlightText = "text", Description = "This item contains the word text." }
            };

            SelectedItem = Items.FirstOrDefault();
        }

        public ICommand C0Command => new RelayCommand<object>((obj) =>
        {
            SelectedItem = Items.FirstOrDefault();
        });

        public ICommand C1Command => new RelayCommand<object>((obj) =>
        {
            SelectedItem = Items.LastOrDefault();
        });

        private DataItem _selectedItem;
        public DataItem SelectedItem
        {
            get { return _selectedItem; }
            set
            {
                if (_selectedItem != value)
                {
                    _selectedItem = value;
                    OnPropertyChanged();
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
        {
            var handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

    public class DataItem
    {
        public string HighlightText { get; set; }
        public string Description { get; set; }
    }

    /*Implement RelayCommand...*/
}

Has anyone encountered a similar issue? Is there any way to resolve it?
Thank you all.

Unplanned
Last Updated: 24 Dec 2025 10:59 by Martin Ivanov

ArgumentException occurs when using the voice typing feature of Windows (started with the Windows Key + H key combo) to convert speech to text in RadRichTextBox.

Exception stacktrace:

System.ArgumentException: 'Requested distance is outside the content of the associated document.'PresentationFramework.dll!System.Windows.Documents.TextPointer.TextPointer(System.Windows.Documents.TextContainer textContainer, int offset, System.Windows.Documents.LogicalDirection direction)
  PresentationFramework.dll!System.Windows.Documents.TextContainer.CreatePointerAtOffset(int offset, System.Windows.Documents.LogicalDirection direction) 
  PresentationFramework.dll!System.Windows.Documents.TextParentUndoUnit.Do() 
  PresentationFramework.dll!MS.Internal.Documents.UndoManager.Redo(int count) 
  PresentationFramework.dll!System.Windows.Documents.TextStore.RedoQuietly(int count)  PresentationFramework.dll!System.Windows.Documents.TextStore.SetFinalDocumentState(MS.Internal.Documents.UndoManager undoManager, System.Collections.Stack imeChangeStack, int appChangeCount, int imeSelectionAnchorOffset, int imeSelectionMovingOffset, int appSelectionAnchorOffset, int appSelectionMovingOffset)  PresentationFramework.dll!System.Windows.Documents.TextStore.HandleCompositionEvents(int previousUndoCount)  PresentationFramework.dll!System.Windows.Documents.TextStore.GrantLockWorker(MS.Win32.UnsafeNativeMethods.LockFlags flags)   PresentationFramework.dll!System.Windows.Documents.TextStore.RequestLock(MS.Win32.UnsafeNativeMethods.LockFlags flags, out int hrSession)

Unplanned
Last Updated: 24 Dec 2025 08:36 by Martin Ivanov
Created by: Martin Ivanov
Comments: 0
Category: RichTextBox
Type: Feature Request
1
Improve the performance of the document import. Currently, large documents take a lot of time to get imported with the DocxFormatProvider, even if not assigned to the RadRichTextBox control. 
Unplanned
Last Updated: 18 Dec 2025 15:15 by Martin Ivanov
Add a property or another mechanism to disable the fade expand/collapse animation of RadExpander in the Windows11 theme.
Unplanned
Last Updated: 18 Dec 2025 10:13 by Martin Ivanov

FormatException is thrown during the import of a table coming from a docx document when the application culture is "sv-SE". This happens when the column width in the document is a floating point number (ex: 120.65). The Swedish culture uses "," as decimal separator and " " as the number group separator, which makes any invariant decimal value (like 120.65) invalid during standard parsing (ex: float.Parse("120.65")).

Stacktrace:

FormatException: The input string '4514.5' was not in the correct format.
at System.Single.Parse(String s)
Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.TableImporter.ImportTableGrid(Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Parsing.Style style)  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.TableImporter.Import(Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Parsing.Style parentStyle)  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.MainDocumentImporter.BuildTable(Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Parsing.Style parentStyle)  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.MainDocumentImporter.BuildBody()  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.MainDocumentImporter.BuildDocument()  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.MainDocumentImporter.Import()Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.DocxImporter.ReadXmlContentFromPackage(Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.DocxPartImporterBase importer)  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.DocxImporter.ReadXmlContentAndRelationsFromPackage(Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.DocxPartImporterBase importer)
Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.Import.DocxImporter.Import()  Telerik.Windows.Controls.RichTextBox.dll!Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.DocxFormatProvider.Import(System.IO.Stream input) 

To work this around, switch to InvariantCulture during the import and return the original culture after that.

 var cultureCache = Thread.CurrentThread.CurrentCulture;
 Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
 Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InvariantCulture;
 var provider= new DocxFormatProvider();
 rtb.Document = provider.Import(stream);
 Thread.CurrentThread.CurrentCulture = cultureCache;
 Thread.CurrentThread.CurrentUICulture = cultureCache;

Unplanned
Last Updated: 15 Dec 2025 13:56 by Stenly
Currently, with the Windows 11 theme, the animation is applied via DoubleAnimationUsingKeyFrames, which sets the Width and Height properties of the element that represents the thumb of the RadToggleSwitchButton to 14px, which does not take into account the ThumbWidth/ThumbHeight properties.

We can improve the animation applied to the thumb for the mouse-over state to take into account the values of the ThumbWidth/ThumbHeight and properties.
Unplanned
Last Updated: 15 Dec 2025 11:28 by Stenly
Typing Korean characters in the edit box causes characters to be missing when the autocomplete is shown.

For example, typing the combination to display the "" character, pressing the "" character, will display the autocomplete for items that contain it; however, pressing another key to create a combination representing the "" causes the "" to be omitted, and only the "" is displayed.
Unplanned
Last Updated: 09 Dec 2025 10:29 by Martin Ivanov
Double clicking a word starting with a non-letter symbol selects the symbol as well, instead only selecting the word. 

"(hello)"

In the example above, if you double click on the word "hello", this should select only the word. However, it selects also the opening bracket. The final selection becomes "(hello".

Note that the issue occurs also if you click in the end of the word "hello" and use Ctrl+Shift+LeftArrow to select it to the beginning.
Unplanned
Last Updated: 08 Dec 2025 09:58 by Martin Ivanov
The licensing watermark overlay gets displayed over Visual Studio when a Telerik WPF control gets hosted in the designer of a WinForms project. 
Unplanned
Last Updated: 05 Dec 2025 12:47 by Stenly
When a maximized window hosts a RadPivotGrid instance, hovering over a cell at the bottom of the control will cause the tooltip to flicker.
Unplanned
Last Updated: 04 Dec 2025 00:27 by Jake Randolph
Resetting the ItemsSource property results in binding errors that could reduce the performance of the control.
Unplanned
Last Updated: 03 Dec 2025 10:13 by ADMIN

Steps to reproduce:

1. Click filter icon in column

2. Enter invalid value in filter input

3. Press Filter, the value gets underlined, suggesting some kind of error.

Image

4. Click the place marked 1 and then 2.
This time, it seems a message appears about the cause of the error, but it doesn’t fit inside the control.

Image

Unplanned
Last Updated: 02 Dec 2025 15:23 by Stenly
Created by: Stenly
Comments: 0
Category: PivotGrid
Type: Feature Request
0

For the Spanish culture, some of the localization strings are for the German culture.

The following resource keys are the ones containing wrong values:

  • PivotInlineFieldList_ValuesEmptyText
  • PivotInlineFieldList_RowsEmptyText
  • PivotInlineFieldList_ColumnsEmptyText
  • PivotInlineFieldList_FiltersEmptyText
  • Pivot_AggregateSum
  • PivotFieldList_SetSumAggregate
  • PivotFieldList_Top10Sum
  • PivotFieldList_StringFormatDescription

To work around this, you could introduce a custom LocalizationManager and override the GetStringOverride method.

More information about this suggestion can be found here.

Unplanned
Last Updated: 26 Nov 2025 17:04 by Eljay
The feature needs to cover functionality as follows: The logarithmic axis has an exponent step (1, 10, 100, 1000) and the current ticks support of the axis only plots evenly distributed ticks. Clients, however, sometimes need to display unevenly distributed ticks (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and so on).
Unplanned
Last Updated: 14 Nov 2025 09:55 by Stenly
The arrow button of a RadMenuItem is not highlighted when the mouse is over.
Unplanned
Last Updated: 14 Nov 2025 09:11 by Stenly
When the selection is enabled and the pivot field list is in inline mode, the selection overlay is misaligned.
Unplanned
Last Updated: 10 Nov 2025 11:52 by ADMIN

One of the following two exceptions occur when the BindingOperations.EnableCollectionSynchronization() is used with the ItemsSource of RadTreeListView:

  • System.InvalidOperationException: 'Collection was modified; enumeration operation may not execute.'
  • System.NullReferenceException: 'Object reference not set to an instance of an object.'

When using the EnableCollectionSynchronization, the corresponding items control should allow updates of the ItemsSource collection on different threads. This is valid if the requirements to use the EnableCollectionSynchronization method are met.

The exception stack traces are:

InvalidOperationException
   at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() in /_/src/libraries/System.Private.CoreLib/src/System/ThrowHelper.cs:line 432
   at System.Collections.Generic.List`1.Enumerator.MoveNext() in /_/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/List.cs:line 1130
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at Telerik.Windows.Data.EnumerableExtensions.<SelectRecursive>d__15`1.MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at Telerik.Windows.Data.HierarchicalCollectionViewBase.PopulateInternalList(IQueryable view)
   at Telerik.Windows.Data.QueryableCollectionView.get_InternalList()
   at Telerik.Windows.Data.HierarchicalCollectionViewBase.get_InternalCount()
   at Telerik.Windows.Data.DataItemCollection.get_Item(Int32 index)
   at Telerik.Windows.Controls.GridView.Rows.GetRowItemsAtRange(Int32 startIndex, Int32 endIndex)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.FlatLayoutStrategy.RealizeRows(Int32 startIndex, Int32 endIndex, Double& verticalOffset, HashSet`1& realizedRows)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.FlatLayoutStrategy.MeasureOverride(Size availableSize)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.MeasureOverride(Size availableSize)
--------------------------------------

NullReferenceException
   at Telerik.Windows.Data.QueryableCollectionView.InternalGetItemAt(Int32 index) in Telerik.Windows.Data\QueryableCollectionView.cs:line 3081
   at Telerik.Windows.Controls.GridView.Rows.GetRowItemsAtRange(Int32 startIndex, Int32 endIndex)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.FlatLayoutStrategy.RealizeRows(Int32 startIndex, Int32 endIndex, Double& verticalOffset, HashSet`1& realizedRows)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.FlatLayoutStrategy.MeasureOverride(Size availableSize)
   at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.MeasureOverride(Size availableSize)

To work this around dispatch the updates of the ItemsSource collection to the main UI thread.

 Dispatcher.BeginInvoke(new Action(() =>
 {
    // add/remove items from the source collection
 }));

1 2 3 4 5 6