When rotating the device , the popup does not adjust its size and the ok cancel buttons cannot be reached.
The issue occurs in all pickers, DatePicker, TimePicker, TimeSpanPicker, ListPicker, DateTimePicker, TemplatedPicker.
Currently, i can use the public method ScrollItemIntoView to scroll to an item in the DataGrid.
I noticed you have an internal method: ScrollColumnIntoView. Please make it public so I can use it to scroll to a specific column.
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
Ran into this issue - which seems to be dependent on how the content gets rendered, so it will fail 100% of the time on specific configurations, resulting in unusable applications.
I've found this issue on Android but there's no telling if the issue is cross platform - as it may depend on item sizings and layout, it may also be reproducible on other platforms, I just haven't hit it yet. The device you run it on may also influence the result, as different resolutions and scalings will impact how items are rendered on screen. I've reproduced this on a Pixel 7 (real device), Samsung A21s (real device) and Pixel 7 Pro (emulator).
Repro steps
MainPage.xaml - use this as the page content:
<ScrollView Padding="15,0,15,15">
<VerticalStackLayout Spacing="25">
<telerik:RadWrapLayout
x:Name="BrokenLayout"
Margin="-5"
SizeChanged="BrokenLayout_SizeChanged"
StretchLastChild="False">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid
Margin="3.75"
Padding="3.75"
BackgroundColor="LightGreen">
<Label
FontAttributes="Bold"
FontSize="11"
LineBreakMode="TailTruncation"
MaxLines="2"
Text="{Binding}"
VerticalOptions="End" />
</Grid>
</DataTemplate>
</BindableLayout.ItemTemplate>
</telerik:RadWrapLayout>
</VerticalStackLayout>
</ScrollView>MainPage.xaml.cs code
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
List<string> items = new List<string>();
items.Add("TSONE");
items.Add("N ANCETOIDO");
items.Add("ADDKNEDEGO LW");
items.Add("A EFCTTLIAH");
items.Add("OHACP HTATTO");
items.Add("AASESII NAYXB/RFKL");
items.Add("EMIQULENOCE PTCTL");
items.Add("SCNSTUGRRIOEMA TEU");
items.Add("EPEENSX");
items.Add("BRUXEROL TAA");
items.Add("TVLRETAAX ER");
items.Add("SMA SELISD");
items.Add("NIAEGOEEATIRUPR SVT");
items.Add("CTPLRCELT AO");
items.Add("REAREPTIRDQ U");
items.Add("ASEDP TUR");
items.Add("CJTEUT ORPDEAP");
items.Add(" CECCRNTARODTO");
items.Add("- FLEOUTEQRUOPWSL");
items.Add("PINTRNMEU REEQTU");
items.Add("RE LWSRANKOGIO TNT");
items.Add("KAREBTA KE");
items.Add("ITTANIW MIEG"); // comment out this one and it'll run fine. keep it and it'll fail.
BindableLayout.SetItemsSource(this.BrokenLayout, items);
}
private double _width = 0;
private double minItemWidth = 110.0;
private double maxItemWidth = 160.0;
private void BrokenLayout_SizeChanged(object sender, EventArgs e)
{
if (sender is RadWrapLayout wl
&& wl.Width > 0
&& (int)Math.Floor(wl.Width) is int widthInt
&& widthInt != this._width)
{
this._width = widthInt;
double? candidateItemWidth = null;
var itemCount = wl.Children.Count;
if (itemCount > 0 && itemCount * maxItemWidth >= widthInt)
{
var columnCount = (int)Math.Ceiling(widthInt / maxItemWidth);
candidateItemWidth = (int)Math.Floor((double)widthInt / columnCount);
if (candidateItemWidth > 1.25 * maxItemWidth)
{
columnCount += 1;
candidateItemWidth = (int)Math.Floor((double)widthInt / columnCount);
}
else if (candidateItemWidth < minItemWidth)
{
columnCount -= 1;
candidateItemWidth = (int)Math.Floor((double)widthInt / columnCount);
}
}
wl.ItemWidth = candidateItemWidth ?? maxItemWidth;
}
}
}Error:
System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')'
0xFFFFFFFFFFFFFFFF in Android.Runtime.RuntimeNativeMethods.monodroid_debugger_unhandled_exception C#
0x1A in Android.Runtime.JNINativeWrapper._unhandled_exception at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:12,5 C#
0x26 in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPZIIII_V at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:441,26 C#
0x8 in System.ThrowHelper.ThrowArgumentOutOfRange_IndexMustBeLessException C#
0x9 in System.Collections.Generic.List<double>.get_Item C#
0x205 in Telerik.Maui.RadWrapLayoutManager.ArrangeChildren C#Delegate aggregate descriptor does not update value in the UI when adding/removing item.
The behavior also happens with the property aggregate descriptor.
Provide an option to sort the template column by nested property.
For example:
<dataGrid:DataGridTemplateColumn>
<dataGrid:DataGridTemplateColumn.CellContentTemplate>
<DataTemplate>
<Label Text="{Binding MyAddress.City}" />
</DataTemplate>
</dataGrid:DataGridTemplateColumn.CellContentTemplate>
<dataGrid:DataGridTemplateColumn.SortDescriptor>
<dataGrid:PropertySortDescriptor PropertyName="MyAddress.City" />
</dataGrid:DataGridTemplateColumn.SortDescriptor>
</dataGrid:DataGridTemplateColumn>
When setting horizontal text alignment to center, the text in Telerik Entry is not centered. In MAUI entry works.
<ContentPage.Resources>
<ResourceDictionary>
<Style TargetType="telerik:RadEntry" x:Key="entry">
<Setter Property="HeightRequest" Value="{OnPlatform WinUI=36,Android=40}"/>
<Setter Property="WidthRequest" Value="{OnPlatform WinUI=40,Android=40}"/>
<Setter Property="MinimumWidthRequest" Value="{OnPlatform WinUI=0,Android=10}"/>
<Setter Property="MaxLength" Value="2"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Margin" Value="0,0"/>
<Setter Property="HorizontalTextAlignment" Value="Center"/>
<Setter Property="VerticalTextAlignment" Value="Center"/>
<Setter Property="HorizontalOptions" Value="Center"/>
</Style>
<Style TargetType="Entry" x:Key="mystyle">
<Setter Property="HeightRequest" Value="{OnPlatform WinUI=36,Android=40}"/>
<Setter Property="WidthRequest" Value="{OnPlatform WinUI=40,Android=40}"/>
<Setter Property="MinimumWidthRequest" Value="{OnPlatform WinUI=0,Android=10}"/>
<Setter Property="MaxLength" Value="2"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Margin" Value="0,0"/>
<Setter Property="HorizontalTextAlignment" Value="Center"/>
<Setter Property="VerticalTextAlignment" Value="Center"/>
<Setter Property="HorizontalOptions" Value="Center"/>
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<VerticalStackLayout Spacing="10">
<Entry Text="99" Style="{StaticResource mystyle}"/>
<telerik:RadEntry Text="99" x:Name="entry" Style="{StaticResource entry}"
ClearButtonVisibility="Never" />
</VerticalStackLayout>