Pending Review
Last Updated: 12 Oct 2026 14:58 by Hari

RadTabView WinUI: selected tab content is visible but native hit-test position remains on previous tab after repeated switching

Product: Telerik UI for .NET MAUI
Version: 15.0.0
Platform: Windows / WinUI
Target framework: net10.0-windows10.0.19041.0
Control: RadTabView

Description

We are experiencing a reproducible issue with RadTabView on Windows/WinUI where the selected tab content becomes visually out of sync with the native hit-test/layout position.

After switching between two tab contents several times, the newly selected tab appears on screen and is reported as selected/enabled, but pointer input is still received by the previously selected tab content.

This makes the visible tab appear disabled or noninteractive even though its controls and ancestors are enabled.

Minimal reproduction sequence

Using two tab contents, for example:

  1. Open the first tab, Line Items.
  2. Click an editable cell such as Item Code.
  3. Switch to the second tab, Expenses.
  4. Click an editable cell such as Expense Code.
  5. Return to Line Items and click Item Code again.
  6. Switch back to Expenses.
  7. Click the visible Expense content.

Expected result

The newly selected Expenses tab should be positioned in the active viewport and receive pointer input.

Actual result

On the failing second activation of Expenses:

  • RadTabView reports Expenses as selected.
  • Expenses content is visibly rendered.
  • Expenses and its managed/native ancestors are enabled.
  • There is no application busy state.
  • There is no pending editor, navigation, or lookup operation.

However, diagnostic inspection of the native layout shows that:

  • the Expenses native content remains approximately one viewport width (~1180 px) to the right of the active viewport;
  • the previous Line Items content remains positioned at the active viewport;
  • clicking the visually displayed Expenses content produces a pointer event in the Line Items grid instead;
  • Expenses therefore never receives the pointer and never begins editing.

In other words, the visual selection and native hit-test/layout position diverge.

Additional observations

  • The problem is reproducible without saving data or executing business operations.
  • It does not depend on data loading, database activity, or application validation.
  • At the failure point our application reports IsBusy=False.
  • The destination content and ancestors report enabled/hit-testable state.
  • No pending focus restoration, navigation, or lookup operation exists.
  • Resizing the application window has restored correct pointer targeting in at least one reproduction.
  • Alt+Tab sometimes changes the behavior but is not a reliable recovery.
  • We tried native and managed layout-refresh approaches. They were not reliable; one native refresh caused pointer targeting to move to a different column, so both experiments were removed.
  • The issue appears to be related to the WinUI/native RadTabView content strip not synchronizing its layout/hit-test position with the selected tab.

Diagnostic state comparison

StateCurrent contentResult
ALine Items – Item CodeCorrect content receives input
BExpenses – Expense CodeCorrect content receives input
CLine Items – Item Code againCorrect content receives input
DExpenses selected againExpenses visible, but pointer is received by Line Items

At state D:

  • selected tab = Expenses
  • application busy state = false
  • Expenses enabled = true
  • native ancestors enabled = true
  • no pending navigation
  • no pending lookup restore
  • no pending editor transition
  • native Expenses content position ≈ +1 viewport width
  • native Line Items content remains at viewport position

Question

Could you please confirm whether this is a known RadTabView issue on Windows/WinUI, particularly involving repeated selection causing the native content strip or hit-test geometry to become out of sync with the selected item?

If this is known, please advise:

  1. whether a fix is available in a newer Telerik build;
  2. whether there is a recommended workaround;
  3. whether forcing a particular RadTabView/native layout API after selection is supported;
  4. whether inactive tab content is expected to remain in the WinUI visual tree and participate in hit testing.

We can provide a small standalone reproduction project and diagnostic logs if required.

Thank you.

Unplanned
Last Updated: 07 Oct 2026 13:48 by ADMIN

I am reporting a button-sizing issue in Telerik UI for .NET MAUI RadCollectionView on iOS. A recycled item displays the correct button text but can retain the width allocated for the previous item’s longer text.

Environment

• Telerik UI for .NET MAUI 15.0.0; also reproduced with 14.1.0.
• .NET 10, Microsoft.Maui.Controls 10.0.80.
• Platform: iOS.
• No exception or error code accompanies the layout failure.

Reproduction sample:  CollectionViewButtonSizingRepro.zip 

The sample displays Telerik  RadCollectionView  and the built-in MAUI  CollectionView  side by side. Both use the same item template: Grid → Telerik RadButton, with no button width request. Each collection has independent data.

Telerik uses automatic item length ( ItemLength="-1" ); MAUI uses  MeasureAllItems . There are no custom handlers, manual recycling, or layout workarounds.

Steps to reproduce

1. Launch the sample on iOS. All buttons initially display Download.
2. Tap several buttons in the Telerik pane. Their text changes to Downloaded, requiring a wider button.
3. Scroll those rows completely out of view and continue through untouched Download items. Try both continuous scrolling and scrolling with pauses.
4. Repeat independently in the MAUI pane.

Expected: After recycling, each button is sized for its current text and image.

Actual: In the Telerik pane, a Download button can retain the wider allocation from the previous Downloaded state, leaving incorrect spacing. The same template does not reproduce the issue in the MAUI CollectionView pane. Upgrading to Telerik 15.0.0 does not resolve it.

Earlier diagnostics in our original application showed correct fresh button measurement after rebinding, but a stale arranged width without a corrective child arrangement when the footer’s bounds remained unchanged.

Thanks,

Mingxiao Ye

Unplanned
Last Updated: 25 Sep 2026 07:45 by Didi
Created by: Didi
Comments: 0
Category: UI for .NET MAUI
Type: Feature Request
0

Provide a Telerik MAUI RefreshView control. 

This control should have integration at least with DataGrid and CollectionView. Now the Telerik CollectionView uses the MAUI RefreshView 

Unplanned
Last Updated: 04 Sep 2026 12:28 by Frédéric.R
Created by: Peter
Comments: 2
Category: UI for .NET MAUI
Type: Feature Request
8

Hi Team,

I would like to be able to have client-side filtering/sorting/grouping capabilities for large backend datasets that cannot be entirely loaded on the client.

As it stands now, the DataGrid (and other data components) can only operate on the data that is has in the local DataView. This means that I need to build a custom filtering solution that prefilters/presorts the backend data before paging and loading it into the DataGrid.

To accomplish the "full view", we need a data layer that understands both the UI as well as the backend. The Telerik UI for WPF product has an excellent solution for this, known as the WPF EntityFrameworkCoreDataSource - Overview - Telerik UI for WPF and the WPF DataServiceDataSource - Overview - Telerik UI for WPF.

If such a feature can be added to Telerik UI for MAUI, it would be an excellent bonus for the component suite in data heavy applications.

Thank you,

Peter

 

Completed
Last Updated: 28 Aug 2026 10:13 by ADMIN
Created by: SturmA
Comments: 6
Category: UI for .NET MAUI
Type: Bug Report
13
when changes are made in the xaml, they are not applied live in the running app using the Hot Reload
Completed
Last Updated: 12 Aug 2026 08:12 by ADMIN
Release 15.0.0 (2026 Q3)
Created by: Didi
Comments: 1
Category: UI for .NET MAUI
Type: Feature Request
0
you have a slider and range slider.

add circular slider control. 
Duplicated
Last Updated: 30 Jul 2026 08:29 by ADMIN
On Android, the AutoComplete control's suggestion view will sometimes only render some or none of the results, which results in a blank or partially blank dropdown for the user. The results will sometimes show up when the user closes the keyboard and re-opens the keyboard; however, it usually will only render the results that were scrolled to at the time of re-opening the keyboard.
Completed
Last Updated: 10 Jul 2026 14:42 by ADMIN
Release 14.1.0
Created by: Wojtek
Comments: 0
Category: UI for .NET MAUI
Type: Feature Request
0

Clear icon is different between input controls and also margin and padding looks different.

Make sure the input controls share same look and feel across platforms.

Completed
Last Updated: 10 Jul 2026 14:42 by ADMIN
Release 14.1.0

Component: SignaturePad

Version: Telerik UI for .NET MAUI 12.0.0 .NET: .NET 10 / .NET MAUI

Platform: Reproduced on iOS (iPad, iPhone) and Android (Samsung). Cross-platform — bug is in the shared SingleTouchSegmentProvider, not in a platform-specific touch handler.


Description

RadSignaturePad crashes the app with an unhandled InvalidOperationException: "Sequence contains no elements" thrown from the touch event pipeline. Because the exception originates inside the native→managed touch callback, it cannot be caught by user code and propagates to AppDomain.CurrentDomain.UnhandledException, terminating the app.

The root cause is a .Last() call on an empty segment collection inside SingleTouchSegmentProvider.OnTouch. The crash occurs in both TouchesMoved and TouchesEnded paths, indicating a missing guard at the central OnTouch entry point — not in a specific touch phase.

Reliable repro

  1. Place a RadSignaturePad and a separate button that invokes signaturePad.ClearCommand.
  2. Begin drawing a stroke on the SignaturePad (finger down, do not lift).
  3. With another finger (or hand), tap the Clear button while the stroke is still active.
  4. Continue moving the drawing finger.

→ TouchesMoved fires after ClearCommand has emptied the internal segment collection. SingleTouchSegmentProvider.OnTouch calls .Last() on the empty collection and throws.

Reproduced on:

  • iPad (iPad12,1), iOS 26.4.28 — 100 % reproducible
  • iPhone, iOS — 100 % reproducible
  • Samsung phone, Android — 100 % reproducible

The same crash also occurs on TouchesEnded in less deterministic scenarios — palm rejection, multi-touch cancellation, Apple Pencil hover-to-touch transitions, or a touch that begins outside the view and ends inside it. All of these can deliver a touch event without a corresponding active segment. We've observed this variant in production on iPad but could not reliably reproduce it in isolation.

Stack trace (TouchesMoved variant — reproducible)

System.InvalidOperationException: Sequence contains no elements
   at System.Linq.ThrowHelper.ThrowNoElementsException()
   at System.Linq.Enumerable.Last[Segment](IEnumerable`1 source)
   at Telerik.Maui.Controls.SignaturePad.SingleTouchSegmentProvider.OnTouch(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignaturePad.SegmentProvider.TouchRecognizer_Touch(Object sender, InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignatureView.OnTouch(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignatureViewHandler.<ConnectHandler>b__3_0(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.FireEvent(InteractionAction actionType, UITouch touch)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.TouchesMoved(NSSet touches, UIEvent evt)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.__Registrar_Callbacks__.callback_1171_..._TouchesMoved(IntPtr pobj, IntPtr sel, IntPtr p0, IntPtr p1, IntPtr* exception_gchandle)

Stack trace (TouchesEnded variant — same root cause, observed in production)

System.InvalidOperationException: Sequence contains no elements
   at System.Linq.ThrowHelper.ThrowNoElementsException()
   at System.Linq.Enumerable.Last[Segment](IEnumerable`1 source)
   at Telerik.Maui.Controls.SignaturePad.SingleTouchSegmentProvider.OnTouch(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignaturePad.SegmentProvider.TouchRecognizer_Touch(Object sender, InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignatureView.OnTouch(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignatureViewHandler.<ConnectHandler>b__3_0(InteractionAdapterEventArgs args)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.FireEvent(InteractionAction actionType, UITouch touch)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.TouchesEnded(NSSet touches, UIEvent evt)
   at Telerik.Maui.Controls.SignaturePad.SignatureViewTouchHandler.__Registrar_Callbacks__.callback_1162_..._TouchesEnded(IntPtr pobj, IntPtr sel, IntPtr p0, IntPtr p1, IntPtr* exception_gchandle)

Minimal XAML


<telerik:RadSignaturePad
    x:Name="signaturePad"
    StrokeThickness="5"
    StrokeColor="Black"
    BackgroundColor="White" />
<Button Text="Clear" Clicked="OnClearClicked" />

void OnClearClicked(object s, EventArgs e) { if (signaturePad.ClearCommand.CanExecute(null)) signaturePad.ClearCommand.Execute(null);

}

No custom touch handlers, no SegmentProvider override, no gestures attached.

Expected behaviour

SingleTouchSegmentProvider.OnTouch should guard against an empty segment collection (e.g. .LastOrDefault() + null check, or an early return when no active segment exists). Touch events arriving after a Clear — or without a preceding TouchesBegan — should be ignored, not throw.

Workaround applied on our side

We disable the Clear button while a stroke is active (toggled in StrokeStarted / StrokeCompleted). This closes the deterministic repro but does not cover the non-deterministic TouchesEnded cases (palm rejection etc.), which still crash. A fix in SingleTouchSegmentProvider.OnTouch is required.

Impact

App crash on a customer-visible workflow (digital signature capture on service tickets). Affects production users on iPads, iPhones, and Android devices.

Asks

  1. Please confirm and provide a fix version / ETA.
  2. Until fixed, is there a supported extension point to override SignatureViewTouchHandler or SegmentProvider so we can guard OnTouch from user code?

Unplanned
Last Updated: 25 Jun 2026 20:39 by Teddy
Created by: Teddy
Comments: 0
Category: UI for .NET MAUI
Type: Feature Request
0

This is a request to have a Markdown Viewer added to Telerik UI for Maui's portfolio. Something similar to these:

We would only need the ability to view markdown. Not edit it.

Thank you,

Teddy

Unplanned
Last Updated: 09 Jun 2026 07:27 by Neil N
Created by: Neil N
Comments: 0
Category: UI for .NET MAUI
Type: Feature Request
3
Completed
Last Updated: 20 May 2026 10:59 by ADMIN
Release 14.0.0 (2026 Q2)

After upgrading from Telerik UI for .NET MAUI 13.0.0 → 13.2.0, a NullReferenceException is thrown inside SchedulerAgendaView.Init() on Windows (WinUI3) whenever a RadScheduler with an AgendaViewDefinition is used. The scheduler never renders and the app receives an unhandled exception.


Steps to Reproduce:

  1. Create a .NET MAUI app targeting Windows (WinUI3)
  2. Add a ContentPage (or any page) with a RadScheduler in XAML, including at least one AgendaViewDefinition in ViewDefinitions:
<telerik:RadScheduler AppointmentsSource="{Binding Appointments}">
    <telerik:RadScheduler.ViewDefinitions>
        <telerik:AgendaViewDefinition />
        <telerik:DayViewDefinition />
    </telerik:RadScheduler.ViewDefinitions>
</telerik:RadScheduler>
  1. Navigate to that page
  2. Observe the unhandled exception

Expected Behavior:

The scheduler renders correctly with the AgendaViewDefinition, as it did in 13.0.0.


Actual Behavior:

An unhandled NullReferenceException is thrown:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Telerik.Maui.Controls.Scheduler.SchedulerAgendaView.Init()
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__124_0(Object state)
   at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0()

Root Cause Analysis (via ILSpy decompilation):

Comparing the decompiled assemblies of 13.0.0 and 13.2.0 reveals a new override in RadScheduler introduced in 13.2.0:

// NEW in 13.2.0 — not present in 13.0.0:
protected override void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
    base.OnPropertyChanged(propertyName);
    if (propertyName == "Parent" && Parent != null && !IsLoaded)
        UpdateActiveViewDefinition();
}

This causes the following call chain to be triggered during InitializeComponent() in the page constructor — before the page is attached to a window:

  1. XAML parser adds RadScheduler to the page → Parent property changes
  2. OnPropertyChanged("Parent") fires → UpdateActiveViewDefinition() is called
  3. → ActiveViewDefinition = ViewDefinitions[0] (the AgendaViewDefinition)
  4. → OnActiveViewDefinitionChanged() → content.Rebuild() (template already applied on WinUI3)
  5. → SchedulerAgendaView.Model setter → Init() is called as async void
  6. Inside Init(), after the first await, the continuation runs and DataBindingComplete fires
  7. The completeHandler inside Init() calls:
((BindableObject)this).Dispatcher.Dispatch(async delegate { ... });
  1. Dispatcher is null because the SchedulerAgendaView is not yet attached to a window → NullReferenceException

The exception is captured by the async void state machine and re-thrown via SynchronizationContext.ThrowAsync → DispatcherQueueSynchronizationContext.Post, which matches the observed stack trace exactly.

Why it worked in 13.0.0: UpdateActiveViewDefinition() was never called from OnPropertyChanged. It was only invoked after IsLoaded = true, at which point Dispatcher is guaranteed to be non-null.

Why the condition !IsLoaded is insufficient: Parent != null does not imply a window is present. During InitializeComponent(), the element has a parent in the logical tree but is not yet attached to any Window, making Dispatcher null on BindableObject.


Workaround:

Do not declare ViewDefinitions in XAML. Instead, add them programmatically in the page's Loaded event handler, at which point Dispatcher is guaranteed to be available:

private void OnPageLoaded(object sender, EventArgs e)
{
    if (scheduler.ViewDefinitions.Count == 0)
    {
        scheduler.ViewDefinitions.Add(new AgendaViewDefinition());
        scheduler.ViewDefinitions.Add(new DayViewDefinition());
        scheduler.ViewDefinitions.Add(new WeekViewDefinition());
        scheduler.ViewDefinitions.Add(new MonthViewDefinition());
    }
}

Suggested Fix:

Either:

Option A — Guard Dispatcher usage inside SchedulerAgendaView.Init():

// In completeHandler, before calling Dispatch:
if (((BindableObject)this).Dispatcher is { } dispatcher)
    dispatcher.Dispatch(...);

Option B — Guard UpdateActiveViewDefinition() in RadScheduler.OnPropertyChanged to only run when content (the internal RadSchedulerContent) has already been set (i.e., template was applied):

if (propertyName == "Parent" && Parent != null && !IsLoaded && content != null)
    UpdateActiveViewDefinition();

Option B is more conservative and closer to the original 13.0.0 behavior, since content being non-null implies the template has been applied and Dispatcher is available.


Environment:

Telerik UI for .NET MAUI13.2.0 (regression from 13.0.0)
.NET.NET 10
PlatformWindows (WinUI3)
MAUI10.0.60

Unplanned
Last Updated: 19 May 2026 09:44 by Giovanni Rojas
Created by: Giovanni Rojas
Comments: 0
Category: UI for .NET MAUI
Type: Feature Request
1
Provide the resx file for the controls used for the localization feature.
Duplicated
Last Updated: 06 Mar 2026 08:08 by ADMIN
Created by: Kyle
Comments: 1
Category: UI for .NET MAUI
Type: Feature Request
8

Right to left flow direction completely breaks the RadDataGrid on Android and on iOS it doesn't seem to do anything.

Repro steps:

Android:

  1. Download project from github: Kbperri/RadDataGridBug
  2. Run the app on an Android device
  3. See that the DataGrid is showing up
  4. Click the "Click me" button which sets the FlowDirection
  5. See that the DataGrid disappears
  6. Click the button again and it appears again

iOS:

  1. Download project from github: Kbperri/RadDataGridBug
  2. Run the app on an iOS device
  3. See that the DataGrid is showing up
  4. Click the "Click me" button which sets the FlowDirection
  5. See that the DataGrid doesn't change direction

If you test this on Windows, the FlowDirection is being appropriately applied.

Android LTR:

RTL:

Completed
Last Updated: 20 Feb 2026 08:59 by ADMIN
Release 13.0.1

when building an app without explicitly setting the target platform, the following error appears:

The type or namespace name 'Compatibility' does not exist in the namespace 'Telerik.Maui.Controls' (are you missing an assembly reference?)

The Telerik.Maui.Controls.Compatibility dll is missing from the .net9/10 shared folders

Unplanned
Last Updated: 07 Jan 2026 17:57 by ADMIN
when building an app with adding the Theming, there are thousands of warnings.
Completed
Last Updated: 12 Nov 2025 15:03 by ADMIN
Release 12.0.0 (2025 Q4)
Created by: Shane
Comments: 2
Category: UI for .NET MAUI
Type: Feature Request
3

Hi,

Do you have on your roadmap to include a Shimmer View / Control as part of your .NET MAUI offerings to tidy up a screen loading indication.

From a UI/UX perspective, a shimmer sits better with our user community rather than a loading indicator.

Thank you,

Shane

 

Completed
Last Updated: 12 Nov 2025 13:24 by ADMIN
Release 12.0.0 (2025 Q4)

It seems the issue happens randomly -> crashes on a Windows 19 Server while running a basic Windows Maui app.

There is a public bug report: https://github.com/mono/SkiaSharp/issues/3168   

Under Review
Last Updated: 15 Oct 2025 07:41 by ADMIN
Created by: Kirk
Comments: 4
Category: UI for .NET MAUI
Type: Feature Request
0
Have the ability to have video calls for .Net Maui
Completed
Last Updated: 13 Aug 2025 07:51 by ADMIN
Release 11.1.0 (2025 Q3)
Created by: Vaibhav
Comments: 3
Category: UI for .NET MAUI
Type: Feature Request
23

The Bottom Sheet component provides an intuitive way to display additional content to the users. It appears on the bottom of a screen as an overlay and presents users with a choice of actions that they must take.

1 2 3 4 5 6