When we have ListenForNestedPropertyChange property set to true and at some point Clear of the ItemsSource is called the newly added items to the collection stop to listen for PropertyChanged.
In order to make ListenForNestedPropertyChange work again toggle the value of the property. First set it to false and after that back to true.
when applying Grouping and RowHeight to the DataGrid and expand the row details, the following happens -> The DataGrid in the RowDetails only appears for alternate rows.
In addition the RowHeight does not apply to the Grouping Row.
Remove the RowHeight from the DataGrid and set the CellContentStyle property to the columns and set the TextMargin to the DataGridTextCellStyle, and ButtonMargin to the DataGridToggleRowDetailsCellStyle. Here is an example when setting them to 0:
<telerik:DataGridTextCellStyle x:Key="cellStyle"
TextMargin="0"/>
<telerik:DataGridToggleRowDetailsCellStyle x:Key="toggleStyle"
ButtonMargin="0"/>
<telerik:RadDataGrid.Columns>
<telerik:DataGridToggleRowDetailsColumn CellContentStyle="{StaticResource toggleStyle}"
IsFrozen="True"/>
<telerik:DataGridTextColumn PropertyName="Country"
CellContentStyle="{StaticResource cellStyle}"
IsFrozen="True"
CanUserReorder="False" />
<telerik:DataGridTextColumn PropertyName="Capital"
CellContentStyle="{StaticResource cellStyle}" />
</telerik:RadDataGrid.Columns>
Navigating to a DataGrid that is placed on third page first time the control displays when navigating to the third page. When navigating back to the second page and then go back to the third page the control do not display.
On net 8 works as expected, the issue happens on net 9 and singleton approach is used.
Null reference exception occurs when measuring the cells container:
at Telerik.Maui.Controls.DataGrid.DataGridTextCellArranger.PrepareContainerForItemOverride(GridCellModel model)
at Telerik.Maui.Controls.DataGrid.DataGridNumericalCellArranger.PrepareContainerForItemOverride(GridCellModel model)
at Telerik.Maui.Controls.DataGrid.DataGridColumn.Telerik.Maui.Controls.DataGrid.IDataGridColumnDefinition.PrepareContainerForItem(GridCellModel model)
at Telerik.Maui.Controls.DataGrid.CellsController`1.GenerateCellsForRow(IItemInfoNode rowModel, Int32 rowSlot)
at Telerik.Maui.Controls.DataGrid.NodePool`2.GenerateModelsForInfos(IList`1 itemInfos, ModelGenerationContext modelGenerationContext, MeasureContext measureContext)
at Telerik.Maui.Controls.DataGrid.NodePool`2.MeasureForward(MeasureContext& context)
at Telerik.Maui.Controls.DataGrid.NodePool`2.MeasureVertically(RadSize availableSize, Double offset, Double verticalBuffer)
at Telerik.Maui.Controls.DataGrid.NodePool`2.OnMeasure(RadSize availableSize, Double offset, Double verticalBuffer)
at Telerik.Maui.Controls.DataGrid.GridModel.MeasureCells(RadSize availableSize)
at Telerik.Maui.Controls.DataGrid.DataGridContentLayout.Measure(Double widthConstraint, Double heightConstraint)
at Microsoft.Maui.Platform.MauiPanel.MeasureOverride(Size availableSize)
at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size* result)
A NullReferenceException may occur during the DataGrid cell measure phase. The issue appears to happen when the cells are being generated or prepared for layout:
at Telerik.Maui.Controls.DataGrid.CellsController`1.GenerateCellsForRow(IItemInfoNode rowModel, Int32 rowSlot)Null reference exception occurs with maui 10.0.90
Just add the datagrid definition in xaml or code behind and exception occurs.
Stack-trace:
at Microsoft.Maui.Controls.BindableObject.ApplyBindings(Boolean fromBindingContextChanged)
at Microsoft.Maui.Controls.BindableObject.SetInheritedBindingContext(BindableObject bindable, Object value)
at Microsoft.Maui.Controls.Element.SetChildInheritedBindingContext(Element child, Object context)
at Microsoft.Maui.Controls.TemplatedPage.SetChildInheritedBindingContext(Element child, Object context)
at Microsoft.Maui.Controls.Element.SetLogicalChildBindingContext(BindableObject child, Object bc)
at Microsoft.Maui.Controls.BindableObjectExtensions.PropagateBindingContext[T](BindableObject self, IEnumerable`1 children, Action`2 setChildBindingContext)
at Microsoft.Maui.Controls.Element.OnBindingContextChanged()
at Microsoft.Maui.Controls.VisualElement.OnBindingContextChanged()
at Microsoft.Maui.Controls.Page.OnBindingContextChanged()
at Microsoft.Maui.Controls.ContentPage.OnBindingContextChanged()
at Microsoft.Maui.Controls.BindableObject.BindingContextPropertyChanged(BindableObject bindable, Object oldvalue, Object newvalue)
at Microsoft.Maui.Controls.BindableObject.OnBindablePropertySet(BindableProperty property, Object original, Object value, Boolean didChange, Boolean willFirePropertyChanged)
at Microsoft.Maui.Controls.Element.OnBindablePropertySet(BindableProperty property, Object original, Object value, Boolean changed, Boolean willFirePropertyChanged)
at Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty property, BindablePropertyContext context, Object value, Boolean currentlyApplying, SetValueFlags attributes, SetterSpecificity specificity, Boolean silent)
at Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty property, Object value, SetValueFlags attributes, SetValuePrivateFlags privateAttributes, SetterSpecificity specificity)
at Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty property, Object value)
at Microsoft.Maui.Controls.BindableObject.set_BindingContext(Object value)
Run SDKBrowserMaui example on WinUI
Navigate to DataGrid->LoadOnDemandCategory->LoadOnDemandExmaple
Start scrolling the grid using the scrollbar
Crash occurs on WinUI.
Footer is displaced when placing the datagrid into an expander. Issue appears only in certain devices and versions. Tested with Android 12, API 33, Pixel 5 Emulator also with Samsung Galaxy S22 Model: SM=S901U1, One UI Version 4.1, Android Version 12 and Samsung Galaxy Tablet -- Galaxy Tab S7 FE.
In addition, issue cannot be reproduced on Android 9 and Android 11.
<telerik:RadDataGrid x:Name="dataGrid" AutomationId="dataGrid" AutoGenerateColumns="False">
<telerik:RadDataGrid.Columns>
<telerik:DataGridTextColumn PropertyName="Country" HeaderText="HighlightedLabel">
<telerik:DataGridTextColumn.CellContentTemplate>
<DataTemplate>
<telerik:RadHighlightLabel UnformattedText="{Binding Country}"
HighlightText="{Binding Source={x:Reference searchEntry}, Path=Text}"
HighlightTextColor="Red"/>
</DataTemplate>
</telerik:DataGridTextColumn.CellContentTemplate>
</telerik:DataGridTextColumn>
</telerik:RadDataGrid.Columns>
</telerik:RadDataGrid>
Actual: The highlighted text doesn't get updated and stays the same.
Add the ability to specify a template when the ItemsSource is null or collection is empty.
As a solution until this feature is implemented:
Hide the DataGrid and show any content over it in the case its ItemsSource is empty.