From 2b3bd884161c01d1344fddf64a911244ad49b05d Mon Sep 17 00:00:00 2001 From: Roshaless Date: Mon, 14 Sep 2026 16:56:51 +0800 Subject: [PATCH] Fix ControlsList TreeView blank-click selection updates - The mouse-up handler manually raised selection changes even when no item was clicked, causing repeated updates while clicking blank areas. Replaced it with the SelectedItemChanged event, which only fires when the selection actually changes. --- Sample Applications/WPFGallery/MainWindow.xaml | 2 +- Sample Applications/WPFGallery/MainWindow.xaml.cs | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Sample Applications/WPFGallery/MainWindow.xaml b/Sample Applications/WPFGallery/MainWindow.xaml index be5cd00c5..bfd660974 100644 --- a/Sample Applications/WPFGallery/MainWindow.xaml +++ b/Sample Applications/WPFGallery/MainWindow.xaml @@ -217,7 +217,7 @@ AutomationProperties.Name="Navigation Pane" ItemsSource="{Binding ViewModel.Controls}" PreviewKeyDown="ControlsList_PreviewKeyDown" - PreviewMouseLeftButtonUp="ControlsList_PreviewMouseLeftButtonUp" + SelectedItemChanged="ControlsList_SelectedItemChanged" Loaded="ControlsList_Loaded"> diff --git a/Sample Applications/WPFGallery/MainWindow.xaml.cs b/Sample Applications/WPFGallery/MainWindow.xaml.cs index d5ff63521..7f09aa81a 100644 --- a/Sample Applications/WPFGallery/MainWindow.xaml.cs +++ b/Sample Applications/WPFGallery/MainWindow.xaml.cs @@ -177,7 +177,6 @@ private void OnNavigating(object? sender, NavigatingEventArgs e) if(selectedTreeViewItem != null) { selectedTreeViewItem.IsSelected = true; - ControlsList_SelectedItemChanged(); } } } @@ -262,16 +261,15 @@ private void ResizeNavChevrons() private void SelectedItemChanged(TreeViewItem? tvi) { - ControlsList_SelectedItemChanged(); if (tvi != null) { tvi.IsExpanded = !tvi.IsExpanded; } } - private void ControlsList_SelectedItemChanged() + private void ControlsList_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { - if (ControlsList.SelectedItem is ControlInfoDataItem navItem) + if (e.NewValue is ControlInfoDataItem navItem) { _navigationService.Navigate(navItem.PageType); var tvi = ControlsList.ItemContainerGenerator.ContainerFromItem(navItem) as TreeViewItem;