Hi,
I use the RadCalendar control (Telerik UI for .NET MAUI ) and I have already implemented the customization of day cell (in month view mode), based on the following official sample,
More specifically I need to add a small circle color bubble/dot under the specific day label. The first time that calendar loads I need to load some "Appointments" called "FocusedMonthWorkingSchedules" as follows. Every time the user changes focused month I need to perform an HTTPs API call to update the list and so to update the calendar's cells asyncronously.
The problem is when user performs month change, the RadCalendar changes UI immediately (it is logical) and when the API call returns, there is no way to trigger the following override method "SelectStyle" because it has already completed n times. At the moment that "SelectStyle" method runs, the stored data inside the list (in the ViewModel) have not been updated yet until the API calls finish, so RadCalendar shows previous state.
public partial class CalendarViewModel : BaseViewModel {
public List<WorkingScheduleView> FocusedMonthWorkingSchedules;
public async Task GetFocusedMonthScedule(DateTime selectedDate){
..... // Business Logic
FocusedMonthWorkingSchedules = await _restService.GetSchedule(request);
.... // Business Logic
}
}
public class CustomCalendarStyleSelector : CalendarStyleSelector {
protected override Style? SelectStyle(object item, BindableObject container) {
var node = (CalendarNode)item;
DateTime? date = node?.Date;
IView? view = (container as RadLayout)?.Children.FirstOrDefault(x => x.GetType() == typeof(Label));
if (view is not null && possibleLabel is Label bubble) {
CalendarViewModel viewModel = App.ServiceProvider?.GetService<CalendarViewModel>();
WorkingSchedule? workingSchedule =
viewModel?.FocusedMonthWorkingSchedules?.FirstOrDefault( x => x.DateTime == date);
bubble.TextColor = workingSchedule?.BubbleColor;
}
}
}
So, is there any best practice to synchronize the data in the UI (RadCalendar), as soon as the https API call finishes?
I have two thoughts, but I cannot find some docs for these,
1. Is there any way to enforce RadCalendar to refresh (e.g. Refresh( ) command)? And if so, can I prevent the initial invokation of "SelectStyle" method n times to improve rendering performance?
2. Is there any way to "pause" the changing month rendering until the asyncronous Task (https API call) finishes? (I think this is a bad practice)
Final thoughts
I can understand that a possible solution could be to use some .NET MAUI handlers, in order to utilize Telerik API for RadCalendar. Is there any example available to implement it using RadCalendar?
Thank you in advance
I have a scenario where I have a large amount of items in my RadSlideView and want to limit the amount of visible indicators. I noticed that there is supposed to be a property called MaxVisibleItems (from the documentation) that I could use to limit the maximum visibile indicators, but when I try to set it in XAML it is not recognized or not accessible.
I'm using the latest version of Telerik.UI.for.Maui (6.8.0) from the telerik nuget feed.
Referenced Documentation: https://docs.telerik.com/devtools/maui/controls/slideview/indicators
The Entry control exposes a event after ClearButton click
<telerik:RadDataGrid x:Name="dataGrid">
<telerik:RadDataGrid.Columns>
<telerik:DataGridTextColumn HeaderText="Property" "PropertyName="Property.NestedProperty" />
</telerik:RadDataGrid.Columns>
<telerik:RadDataGrid.FilterDescriptors>
<telerik:TextFilterDescriptor PropertyName="Property.NestedProperty" Operator="EqualsTo" Value="Value" />
</telerik:RadDataGrid.FilterDescriptors>
</telerik:RadDataGrid>
<?xml version="1.0" encoding="utf-8" ?>
<telerik:RadContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:telerik="http://schemas.telerik.com/2022/xaml/maui"
x:Class="SDKBrowserMaui.Examples.SlideViewControl.FeaturesCategory.InteractionModeExample.InteractionMode"
Margin="5">
<Grid>
<!-- >> slideview-interaction-xaml -->
<telerik:RadSlideView x:Name="slideView"
ItemsSource="{Binding Views}"
InteractionMode="Pan">
<telerik:RadSlideView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Row="0" Text="{Binding Content}" HorizontalTextAlignment="Center" Margin="20"></Label>
<Frame Grid.Row="1" Background="LightGray" CornerRadius="15" Margin="15">
<!--<Frame.GestureRecognizers>
<SwipeGestureRecognizer Direction="Left,Right" Swiped="SwipeGestureRecognizer_OnSwiped"></SwipeGestureRecognizer>
</Frame.GestureRecognizers>-->
<telerik:RadButton Text="Button in Frame"
TextColor="#007ACC"
VerticalOptions="Center"/>
</Frame>
<telerik:RadButton Grid.Row="2" Text="Button in Grid"
TextColor="#007ACC"
VerticalOptions="Center"/>
</Grid>
</DataTemplate>
</telerik:RadSlideView.ItemTemplate>
</telerik:RadSlideView>
<!-- << slideview-interaction-xaml -->
</Grid>
</telerik:RadContentView>
I've noticed this issue after updating from Telerik UI version 6.5.0 to 6.8.0 on my iOS device. Before the update when copying and pasting this text:
I get this result in version 6.5.0:
And now in version 6.8.0 I get this:
Hi!
I added RadCartesianChart inside RadSlideView.
I have charts where on one slide there is NumericalAxis on another CategoricalAxis.
Is it possible to do an extension and treat this, or another way?
Custom axis: Numerical axisExt
Regards,
Rodrigo.
Hello,
I trying to use RadEventToCommandBehavior at page level to binding a Appearing Event to a command in my ViewModel, but it doesn't work.
[Page.XAML]
<ContentPage.Behaviors>
<telerik:RadEventToCommandBehavior Command="{Binding AppearingCommand}" EventName="Appearing" />
</ContentPage.Behaviors>
[ViewModel]
[RelayCommand]
public async Task AppearingCommand()
{
await LoadData();
}
I am trying to emulate an old UI, where the button text Previous Module is split into two lines. Is there a way to force word wrap or multi-line behavior on the RadButton? I tried placing a \n between the two words, but it treated it as text and not as an escape sequence.
Thanks
-Sean