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:
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>
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:
RadScheduler to the page → Parent property changesOnPropertyChanged("Parent") fires → UpdateActiveViewDefinition() is calledActiveViewDefinition = ViewDefinitions[0] (the AgendaViewDefinition)OnActiveViewDefinitionChanged() → content.Rebuild() (template already applied on WinUI3)SchedulerAgendaView.Model setter → Init() is called as async voidInit(), after the first await, the continuation runs and DataBindingComplete firescompleteHandler inside Init() calls:((BindableObject)this).Dispatcher.Dispatch(async delegate { ... });
Dispatcher is null because the SchedulerAgendaView is not yet attached to a window → NullReferenceExceptionThe 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 MAUI | 13.2.0 (regression from 13.0.0) |
| .NET | .NET 10 |
| Platform | Windows (WinUI3) |
| MAUI | 10.0.60 |
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
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
When navigating to a page with a RadRichTextEditor, it sometimes pops up an error on page load. It is inconsistent, but I attached an example gif. The xaml on the page I'm navigating to is basic:
<Grid Margin="20">
I believe this problem started with MAUI version 9.0.70. Possibly with one of these changes:
https://github.com/dotnet/maui/pull/27003/files
https://github.com/dotnet/maui/pull/28354/files
I have a user who reported a crash. In Sentry, I see this:
System.NullReferenceException: Object reference not set to an instance of an object.
?, in void TelerikLicense.ShowLicenseMessage(Page page)
?, in void TelerikLicense.VerifyLicense(Element element)+() => { }
?, in void TelerikLicense.ExecuteActionOnLoaded(Page page, Action action)
?, in void TelerikLicense.VerifyLicense(Element element)
?, in object <InitializeComponent>_anonXamlCDataTemplate_21.LoadDataTemplate()
?, in object ElementTemplate.CreateContent()
?, in void BindableLayoutController.CreateChildren()
?, in NotifyCollectionChangedAction NotifyCollectionChangedEventArgsExtensions.Apply(NotifyCollectionChangedEventArgs self, Action<object, int, bool> insert, Action<object, int> removeAt, Action reset)
?, in void BindableLayoutController.ItemsSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
?, in void WeakNotifyCollectionChangedProxy.OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
File "ObservableCollection.cs", line 192, in void ObservableCollection<T>.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
handler(this, e);
?, in void ExtObservableCollection<T>.RaiseCollectionChanged()
the app was built with a successful license-check
Telerik.Licensing 1.6.6
Provide an AI assistant for code generation with the Telerik MAUI controls.
Telerik Blazor released such assistant https://www.telerik.com/blazor-ui/documentation/ai/overview
When using Telerik controls, I got the following warning:
Not linking with the framework OpenGLES referenced by a module reference in SkiaSharp.Views.iOS.dll
when I add a SkiaSharp 3.116.1 version to the project, the warning disappear.
Please update the SkiaSharp package reference in the Telerik MAUI NuGet package
Dear Telerik-Team
with the new version 9.0.0 on Android the Scheduler doesn't display the Date/Timepicker on creating/editing an new appointment. The Date/Timepicker Popup is only displayed when the "EditAppointmentDialog" is closed. You can easy reproduce it. Just add the Scheduler to a plain project.
I have attached a VS solution where you can reproduce it.
Thanks for helping/fixing it as soon as possible. I need this new version becasue of another bugfix for scheduler in it...
When creating a .NET MAUI blank net 9 template and adding for example PDF toolbar, the toolbar icons do not display as the app is build as unpackaged.
Solution:
Change the package type in the .csproj file:
from:
<WindowsPackageType>None</WindowsPackageType>
to:
<WindowsPackageType>MSIX</WindowsPackageType>
"System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Maui.Controls.Compatibility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.'"
Occurs when creating a blank .net maui project using .net9 and adding Telerik MAUI NuGet Package latest version 8.0.0
Repro steps:
1. Create a new dotnet9 basic project in visual studio. 2. Launch it on windows. it runs. 3. Add the Telerik.UI.for.Maui.Trial package, version 8. (don't bother adding the UseTelerik line to MauiProgram.cs, it'll fail either way). 4. Clean and Rebuild the solution. 5. Debug the app on windows again. It fails on launch with a file not found error that seems to relate to: "Exception thrown: 'System.IO.FileNotFoundException' in Telerik.Maui.Controls.Compatibility.dll" System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Maui.Controls.Compatibility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.'
After updating our Maui application to Maui version 8.0.90, the Entry controls in the WinUI version stopped responding to WidthRequest, HorizontalOptions, or parent container sizes. I thought it was just a Maui problem, but in the relevant issue's notes, I saw that users were having trouble duplicating it unless Telerik UI for .NET Maui was installed (https://github.com/dotnet/maui/issues/24783).
So I created a test app that contains a few Entry controls in various containers:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="WinUIEntryBug.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Border>
<Entry />
</Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Entry Grid.Column="0"></Entry>
</Grid>
<Frame>
<Entry />
</Frame>
<Entry />
</VerticalStackLayout>
</ScrollView>
</ContentPage>Without the Telerik components added to the project, the Entry boxes render correctly:
But, when I add a reference to Telerik UI for .NET Maui version 7.1.0 (latest at the time this was written), I get this:
Note: I didn't even add UseTelerik() to the Builder in the MauiProgram.cs, just added the Nuget package.
Changing the WidthRequest, HorizontalOptions, MinWidthRequest, etc. does not affect their size. They do render correctly in iOS and Android, though.
If I then remove the UI for .NET Maui Nuget package, they go back to working.
In our main application, we are heavily dependent on Telerik components and have a substantial number of customers using the Windows version of our application, so this heavily impacts our ability to ship. Particularly since the Maui 8.0.90 fixes other bugs that we needed addressed.
I've attached my sample project with the Telerik UI for .NET Maui package installed. You can remove it to see the normal operation of the Entry boxes.
This was a regression when I upgraded to 7.1.0.
Before, when the editor was empty and had a height set, you could tap anywhere to start editing. Now, I can only start editing by tapping the top of the editor.
I tested this only on Android.
Add a VS Item Template for Login screen as in Telerik UI for Xamarin: VIsual Studio Item Templates.
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
I would like to draw attention to this at an early stage.
When using MAUI Nightly 8.0.20-nightly.10376, the app crashes immediately upon startup if you set Telerik Popup Settings in the MAUI Styles
See min repro example https://github.com/baaaaif/MauiNightlyCrash
<MauiVersion>8.0.20-nightly.10376</MauiVersion><Style TargetType="telerik:RadTimePicker">
<Setter Property="PopupSettings">
<Setter.Value>
<telerik:PickerPopupSettings IsHeaderVisible="False" />
</Setter.Value>
</Setter>
</Style>From the inner Exception...:
| Name | Value | Type | |
|---|---|---|---|
| ◢ | InnerException | {"Object reference not set to an instance of an object."} | System.Exception {System.NullReferenceException} |
at Microsoft.Maui.Controls.AppThemeBinding.AppThemeProxy..ctor(Element parent, AppThemeBinding binding) at Microsoft.Maui.Controls.AppThemeBinding.Apply(Object context, BindableObject bindObj, BindableProperty targetProperty, Boolean fromBindingContextChanged, SetterSpecificity specificity) at Microsoft.Maui.Controls.BindableObject.SetBinding(BindableProperty targetProperty, BindingBase binding, SetterSpecificity specificity) at Microsoft.Maui.Controls.BindableObject.SetBinding(BindableProperty targetProperty, BindingBase binding) at Microsoft.Maui.Controls.BindableObjectExtensions.SetAppTheme[T](BindableObject self, BindableProperty targetProperty, T light, T dark) at Microsoft.Maui.Controls.BindableObjectExtensions.SetAppThemeColor(BindableObject self, BindableProperty targetProperty, Color light, Color dark) at Telerik.Maui.Controls.PickerPopupSettings.OnPopupOutsideBackgroundColorPropertyChanged(Color color) at Telerik.Maui.Controls.PickerPopupSettings..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)