@@ -437,16 +437,18 @@ checkBox.DataContext is ListedItem item &&
437437
438438 private new void FileList_ContainerContentChanging ( ListViewBase sender , ContainerContentChangingEventArgs args )
439439 {
440- args . ItemContainer . PointerEntered -= ItemRow_PointerEntered ;
441- args . ItemContainer . PointerExited -= ItemRow_PointerExited ;
442- args . ItemContainer . PointerCanceled -= ItemRow_PointerCanceled ;
440+ var selectionCheckbox = args . ItemContainer . FindDescendant ( "SelectionCheckbox" ) ! ;
441+
442+ selectionCheckbox . PointerEntered -= SelectionCheckbox_PointerEntered ;
443+ selectionCheckbox . PointerExited -= SelectionCheckbox_PointerExited ;
444+ selectionCheckbox . PointerCanceled -= SelectionCheckbox_PointerCanceled ;
443445
444446 base . FileList_ContainerContentChanging ( sender , args ) ;
445447 SetCheckboxSelectionState ( args . Item , args . ItemContainer as GridViewItem ) ;
446448
447- args . ItemContainer . PointerEntered += ItemRow_PointerEntered ;
448- args . ItemContainer . PointerExited += ItemRow_PointerExited ;
449- args . ItemContainer . PointerCanceled += ItemRow_PointerCanceled ;
449+ selectionCheckbox . PointerEntered += SelectionCheckbox_PointerEntered ;
450+ selectionCheckbox . PointerExited += SelectionCheckbox_PointerExited ;
451+ selectionCheckbox . PointerCanceled += SelectionCheckbox_PointerCanceled ;
450452 }
451453
452454 private void SetCheckboxSelectionState ( object item , GridViewItem ? lviContainer = null )
@@ -467,7 +469,7 @@ private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer =
467469 checkbox . Unchecked += ItemSelected_Unchecked ;
468470 }
469471
470- UpdateCheckboxVisibility ( container ) ;
472+ UpdateCheckboxVisibility ( container , checkbox ? . IsPointerOver ?? false ) ;
471473 }
472474 }
473475
@@ -484,37 +486,35 @@ private void Grid_Loaded(object sender, RoutedEventArgs e)
484486 itemContainer . ContextFlyout = ItemContextMenuFlyout ;
485487 }
486488
487- private void ItemRow_PointerEntered ( object sender , PointerRoutedEventArgs e )
489+ private void SelectionCheckbox_PointerEntered ( object sender , PointerRoutedEventArgs e )
488490 {
489- UpdateCheckboxVisibility ( sender , true ) ;
491+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , true ) ;
490492 }
491493
492- private void ItemRow_PointerExited ( object sender , PointerRoutedEventArgs e )
494+ private void SelectionCheckbox_PointerExited ( object sender , PointerRoutedEventArgs e )
493495 {
494- UpdateCheckboxVisibility ( sender , false ) ;
496+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
495497 }
496498
497- private void ItemRow_PointerCanceled ( object sender , PointerRoutedEventArgs e )
499+ private void SelectionCheckbox_PointerCanceled ( object sender , PointerRoutedEventArgs e )
498500 {
499- UpdateCheckboxVisibility ( sender , false ) ;
501+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
500502 }
501503
502- private void UpdateCheckboxVisibility ( object sender , bool ? isPointerOver = null )
504+ private void UpdateCheckboxVisibility ( object sender , bool isPointerOver )
503505 {
504506 if ( sender is GridViewItem control && control . FindDescendant < UserControl > ( ) is UserControl userControl )
505507 {
506- // Save pointer over state accordingly
507- if ( isPointerOver . HasValue )
508- control . SetValue ( IsPointerOverProperty , isPointerOver ) ;
509508 // Handle visual states
510509 // Show checkboxes when items are selected (as long as the setting is enabled)
511- // Show checkboxes when hovering of the item (regardless of the setting to hide them)
510+ // Show checkboxes when hovering over the checkbox area (regardless of the setting to hide them)
512511 if ( UserSettingsService . FoldersSettingsService . ShowCheckboxesWhenSelectingItems && control . IsSelected
513- || control . GetValue ( IsPointerOverProperty ) is not false )
512+ || isPointerOver )
514513 VisualStateManager . GoToState ( userControl , "ShowCheckbox" , true ) ;
515514 else
516515 VisualStateManager . GoToState ( userControl , "HideCheckbox" , true ) ;
517516 }
518517 }
518+
519519 }
520520}
0 commit comments