Browse Source

Simplify setting TreeView.SelectedItem.

Calling the overload of `SetAndRaise` which takes a callback should not be necessary because that was only needed in `SelectingItemsControl` due to the interaction between `SelectedIndex` and `SelectedItem`.
Steven Kirk 6 years ago
parent
commit
6712626181
1 changed files with 14 additions and 25 deletions
  1. 14 25
      src/Avalonia.Controls/TreeView.cs

+ 14 - 25
src/Avalonia.Controls/TreeView.cs

@@ -105,32 +105,21 @@ namespace Avalonia.Controls
             get => _selectedItem;
             set
             {
-                SetAndRaise(SelectedItemProperty, ref _selectedItem,
-                    (object val, ref object backing, Action<Action> notifyWrapper) =>
-                    {
-                        var old = backing;
-                        backing = val;
-
-                        notifyWrapper(() =>
-                            RaisePropertyChanged(
-                                SelectedItemProperty,
-                                old,
-                                val));
+                SetAndRaise(SelectedItemProperty, ref _selectedItem, value);
 
-                        if (val != null)
-                        {
-                            if (SelectedItems.Count != 1 || SelectedItems[0] != val)
-                            {
-                                _syncingSelectedItems = true;
-                                SelectSingleItem(val);
-                                _syncingSelectedItems = false;
-                            }
-                        }
-                        else if (SelectedItems.Count > 0)
-                        {
-                            SelectedItems.Clear();
-                        }
-                    }, value);
+                if (value != null)
+                {
+                    if (SelectedItems.Count != 1 || SelectedItems[0] != value)
+                    {
+                        _syncingSelectedItems = true;
+                        SelectSingleItem(value);
+                        _syncingSelectedItems = false;
+                    }
+                }
+                else if (SelectedItems.Count > 0)
+                {
+                    SelectedItems.Clear();
+                }
             }
         }