-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
25421- ListViewRenderer Crash in HostApp and BindingError was occured in windows platforms #25440
Conversation
Hey there @SuthiYuvaraj! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
@@ -802,6 +802,9 @@ void OnListItemClicked(object sender, ItemClickEventArgs e) | |||
|
|||
void OnControlSelectionChanged(object sender, WSelectionChangedEventArgs e) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did we validate if this subscription needs to be removed?
maui/src/Controls/src/Core/Compatibility/Handlers/ListView/Windows/ListViewRenderer.cs
Line 116 in d6cacfb
List.SelectionChanged += OnControlSelectionChanged; |
I'm still wondering if the handler is getting disconnected and we're not disconnecting all the proper events
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PureWeen In Windows, the view renderer is not being disconnected properly. Currently, all events are only disconnected in the Dispose() method. We should override DisconnectHandlerCore(like below code) for all view renderers and ensure all events are properly disconnected. As a short-term fix to resolve the UI test case issue, we added a null check for Element
private protected override void DisconnectHandlerCore()
{
// disconnect all the events.
}
closing this one in favor of |
RootCause
ListViewRenderer Crash on HostApp
As the HostApp uses a ListView to display a list of items, selecting a page navigates to the corresponding test cases and sets the sample page as the current main page. This action disposes the HostApp's main page, which contains the ListView. As a result, the previous list is also disposed, leading to a crash in the ListViewRenderer during the
OnControlSelectionChanged
event.BindingErrors occurs on windows platform
In the HostApp, the pages private field of the ListView is set as the BindingContext of the ListView, which is causing the issue. The pages field is directly assigned to the
ItemsSource
, so there's no need to set theBindingContext
. The problem arises because the same collection is being used for both theBindingContext
and theItemsSource
, which is the root cause of the issue.Description of Change
ListViewRenderer Crash on HostApp
Ensuring that Element is not null before updating the selection will resolve the issue
BindingErrors occurs on windows platform
There is no need to define the BindingContext.
Issues Fixed
Fixes #25421