@@ -434,16 +434,18 @@ checkBox.DataContext is ListedItem item &&
434
434
435
435
private new void FileList_ContainerContentChanging ( ListViewBase sender , ContainerContentChangingEventArgs args )
436
436
{
437
- args . ItemContainer . PointerEntered -= ItemRow_PointerEntered ;
438
- args . ItemContainer . PointerExited -= ItemRow_PointerExited ;
439
- args . ItemContainer . PointerCanceled -= ItemRow_PointerCanceled ;
437
+ var selectionCheckbox = args . ItemContainer . FindDescendant ( "SelectionCheckbox" ) ! ;
438
+
439
+ selectionCheckbox . PointerEntered -= SelectionCheckbox_PointerEntered ;
440
+ selectionCheckbox . PointerExited -= SelectionCheckbox_PointerExited ;
441
+ selectionCheckbox . PointerCanceled -= SelectionCheckbox_PointerCanceled ;
440
442
441
443
base . FileList_ContainerContentChanging ( sender , args ) ;
442
444
SetCheckboxSelectionState ( args . Item , args . ItemContainer as GridViewItem ) ;
443
445
444
- args . ItemContainer . PointerEntered += ItemRow_PointerEntered ;
445
- args . ItemContainer . PointerExited += ItemRow_PointerExited ;
446
- args . ItemContainer . PointerCanceled += ItemRow_PointerCanceled ;
446
+ selectionCheckbox . PointerEntered += SelectionCheckbox_PointerEntered ;
447
+ selectionCheckbox . PointerExited += SelectionCheckbox_PointerExited ;
448
+ selectionCheckbox . PointerCanceled += SelectionCheckbox_PointerCanceled ;
447
449
}
448
450
449
451
private void SetCheckboxSelectionState ( object item , GridViewItem ? lviContainer = null )
@@ -464,7 +466,7 @@ private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer =
464
466
checkbox . Unchecked += ItemSelected_Unchecked ;
465
467
}
466
468
467
- UpdateCheckboxVisibility ( container ) ;
469
+ UpdateCheckboxVisibility ( container , checkbox ? . IsPointerOver ?? false ) ;
468
470
}
469
471
}
470
472
@@ -481,37 +483,35 @@ private void Grid_Loaded(object sender, RoutedEventArgs e)
481
483
itemContainer . ContextFlyout = ItemContextMenuFlyout ;
482
484
}
483
485
484
- private void ItemRow_PointerEntered ( object sender , PointerRoutedEventArgs e )
486
+ private void SelectionCheckbox_PointerEntered ( object sender , PointerRoutedEventArgs e )
485
487
{
486
- UpdateCheckboxVisibility ( sender , true ) ;
488
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , true ) ;
487
489
}
488
490
489
- private void ItemRow_PointerExited ( object sender , PointerRoutedEventArgs e )
491
+ private void SelectionCheckbox_PointerExited ( object sender , PointerRoutedEventArgs e )
490
492
{
491
- UpdateCheckboxVisibility ( sender , false ) ;
493
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
492
494
}
493
495
494
- private void ItemRow_PointerCanceled ( object sender , PointerRoutedEventArgs e )
496
+ private void SelectionCheckbox_PointerCanceled ( object sender , PointerRoutedEventArgs e )
495
497
{
496
- UpdateCheckboxVisibility ( sender , false ) ;
498
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
497
499
}
498
500
499
- private void UpdateCheckboxVisibility ( object sender , bool ? isPointerOver = null )
501
+ private void UpdateCheckboxVisibility ( object sender , bool isPointerOver )
500
502
{
501
503
if ( sender is GridViewItem control && control . FindDescendant < UserControl > ( ) is UserControl userControl )
502
504
{
503
- // Save pointer over state accordingly
504
- if ( isPointerOver . HasValue )
505
- control . SetValue ( IsPointerOverProperty , isPointerOver ) ;
506
505
// Handle visual states
507
506
// Show checkboxes when items are selected (as long as the setting is enabled)
508
- // Show checkboxes when hovering of the item (regardless of the setting to hide them)
507
+ // Show checkboxes when hovering over the checkbox area (regardless of the setting to hide them)
509
508
if ( UserSettingsService . FoldersSettingsService . ShowCheckboxesWhenSelectingItems && control . IsSelected
510
- || control . GetValue ( IsPointerOverProperty ) is not false )
509
+ || isPointerOver )
511
510
VisualStateManager . GoToState ( userControl , "ShowCheckbox" , true ) ;
512
511
else
513
512
VisualStateManager . GoToState ( userControl , "HideCheckbox" , true ) ;
514
513
}
515
514
}
515
+
516
516
}
517
517
}
0 commit comments