Container cleanups.

This commit is contained in:
Burak Kaan Köse
2025-10-27 01:00:38 +01:00
parent d9fc365aeb
commit 54ac07f6fb
5 changed files with 60 additions and 24 deletions
@@ -8,11 +8,12 @@ namespace Wino.Mail.WinUI.Controls.ListView;
public partial class WinoMailItemViewModelListViewItem : ListViewItem
{
private readonly long _selectionChangeCallbackToken;
public WinoMailItemViewModelListViewItem()
{
DefaultStyleKey = typeof(WinoMailItemViewModelListViewItem);
RegisterPropertyChangedCallback(IsSelectedProperty, OnIsSelectedChanged);
_selectionChangeCallbackToken = RegisterPropertyChangedCallback(IsSelectedProperty, OnIsSelectedChanged);
}
protected override void OnContentChanged(object oldContent, object newContent)
@@ -31,6 +32,16 @@ public partial class WinoMailItemViewModelListViewItem : ListViewItem
}
}
public void Cleanup()
{
if (Content is MailItemViewModel mailItem)
{
UnregisterSelectionCallback(mailItem);
UnregisterPropertyChangedCallback(IsSelectedProperty, _selectionChangeCallbackToken);
}
}
private void UnregisterSelectionCallback(IMailListItem mailItem)
{
mailItem.PropertyChanged -= MailPropChanged;