From 0b1e938ff73ac65861adc3403bbb05cffb5dba89 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Tue, 2 Nov 2021 09:55:18 +0100 Subject: [PATCH] fixes(DevTools): Double subscribe/unsubscribe INotifyPropertyChanged --- .../ViewModels/ControlDetailsViewModel.cs | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs index cfc64c8767..ba3fafdfaf 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs @@ -423,16 +423,16 @@ namespace Avalonia.Diagnostics.ViewModels protected void NavigateToProperty(object o, string entityName) { - if (SelectedEntity is INotifyPropertyChanged inpc1) + var oldSelectedEntity = SelectedEntity; + if (oldSelectedEntity is IAvaloniaObject ao1) { - inpc1.PropertyChanged -= ControlPropertyChanged; + ao1.PropertyChanged -= ControlPropertyChanged; } - - if (SelectedEntity is AvaloniaObject ao1) + else if (oldSelectedEntity is INotifyPropertyChanged inpc1) { - ao1.PropertyChanged -= ControlPropertyChanged; + inpc1.PropertyChanged -= ControlPropertyChanged; } - + SelectedEntity = o; SelectedEntityName = entityName; SelectedEntityType = o.ToString(); @@ -448,17 +448,15 @@ namespace Avalonia.Diagnostics.ViewModels view.GroupDescriptions.Add(new DataGridPathGroupDescription(nameof(AvaloniaPropertyViewModel.Group))); view.Filter = FilterProperty; PropertiesView = view; - - if (o is INotifyPropertyChanged inpc2) - { - inpc2.PropertyChanged += ControlPropertyChanged; - } - if (o is AvaloniaObject ao2) + if (o is IAvaloniaObject ao2) { ao2.PropertyChanged += ControlPropertyChanged; } - + else if (o is INotifyPropertyChanged inpc2) + { + inpc2.PropertyChanged += ControlPropertyChanged; + } } } }