Removed the INC registrations for list view items.
This commit is contained in:
@@ -69,14 +69,12 @@ public partial class WinoListView : Microsoft.UI.Xaml.Controls.ListView
|
||||
&& container.Item != mailItemViewModel)
|
||||
{
|
||||
container.Item = mailItemViewModel;
|
||||
container.IsCustomSelected = mailItemViewModel.IsSelected;
|
||||
}
|
||||
else if (item is ThreadMailItemViewModel threadMailItemViewModel
|
||||
&& element is WinoThreadMailItemViewModelListViewItem threadContainer
|
||||
&& threadContainer.Item != threadMailItemViewModel)
|
||||
{
|
||||
threadContainer.Item = threadMailItemViewModel;
|
||||
threadContainer.IsSelected = threadMailItemViewModel.IsSelected;
|
||||
threadContainer.IsThreadExpanded = threadMailItemViewModel.IsThreadExpanded;
|
||||
}
|
||||
}
|
||||
@@ -88,12 +86,10 @@ public partial class WinoListView : Microsoft.UI.Xaml.Controls.ListView
|
||||
if (item is MailItemViewModel mailItemViewModel && element is WinoMailItemViewModelListViewItem container)
|
||||
{
|
||||
container.Item = null;
|
||||
container.IsCustomSelected = false;
|
||||
}
|
||||
else if (item is ThreadMailItemViewModel threadMailItemViewModel && element is WinoThreadMailItemViewModelListViewItem threadContainer)
|
||||
{
|
||||
threadContainer.Item = null;
|
||||
threadContainer.IsSelected = false;
|
||||
threadContainer.IsThreadExpanded = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.ComponentModel;
|
||||
using CommunityToolkit.WinUI;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
@@ -23,26 +22,17 @@ public partial class WinoMailItemViewModelListViewItem : ListViewItem
|
||||
|
||||
partial void OnItemPropertyChanged(DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
// TODO: This slows down. Optimize later.
|
||||
if (e.OldValue is MailItemViewModel oldMailItemViewModel) UnregisterPropertyChanged(oldMailItemViewModel);
|
||||
if (e.NewValue is MailItemViewModel newMailItemViewModel) RegisterPropertyChanged(newMailItemViewModel);
|
||||
if (e.OldValue is MailItemViewModel oldItem)
|
||||
oldItem.OnSelectionChanged = null;
|
||||
|
||||
if (e.NewValue is MailItemViewModel mailItemViewModel)
|
||||
IsCustomSelected = mailItemViewModel.IsSelected;
|
||||
else
|
||||
IsCustomSelected = false;
|
||||
}
|
||||
|
||||
private void RegisterPropertyChanged(MailItemViewModel model) => model.PropertyChanged += ModelPropertyChanged;
|
||||
private void UnregisterPropertyChanged(MailItemViewModel model) => model.PropertyChanged -= ModelPropertyChanged;
|
||||
|
||||
private void ModelPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (sender is not MailItemViewModel mailItemViewModel) return;
|
||||
|
||||
if (e.PropertyName == nameof(MailItemViewModel.IsSelected))
|
||||
if (e.NewValue is MailItemViewModel newItem)
|
||||
{
|
||||
IsCustomSelected = mailItemViewModel.IsSelected;
|
||||
newItem.OnSelectionChanged = (selected) => IsCustomSelected = selected;
|
||||
IsCustomSelected = newItem.IsSelected;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsCustomSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using CommunityToolkit.WinUI;
|
||||
using Microsoft.UI.Xaml;
|
||||
@@ -40,20 +39,17 @@ public partial class WinoThreadMailItemViewModelListViewItem : ListViewItem
|
||||
|
||||
partial void OnItemPropertyChanged(DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.OldValue is ThreadMailItemViewModel oldMailItemViewModel) UnregisterPropertyChanged(oldMailItemViewModel);
|
||||
if (e.NewValue is ThreadMailItemViewModel newMailItemViewModel) RegisterPropertyChanged(newMailItemViewModel);
|
||||
}
|
||||
if (e.OldValue is ThreadMailItemViewModel oldItem)
|
||||
oldItem.OnSelectionChanged = null;
|
||||
|
||||
private void RegisterPropertyChanged(ThreadMailItemViewModel model) => model.PropertyChanged += ModelPropertyChanged;
|
||||
private void UnregisterPropertyChanged(ThreadMailItemViewModel model) => model.PropertyChanged -= ModelPropertyChanged;
|
||||
|
||||
private void ModelPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (sender is not ThreadMailItemViewModel mailItemViewModel) return;
|
||||
|
||||
if (e.PropertyName == nameof(ThreadMailItemViewModel.IsSelected))
|
||||
if (e.NewValue is ThreadMailItemViewModel newItem)
|
||||
{
|
||||
IsCustomSelected = mailItemViewModel.IsSelected;
|
||||
newItem.OnSelectionChanged = (selected) => IsCustomSelected = selected;
|
||||
IsCustomSelected = newItem.IsSelected;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsCustomSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user