@@ -437,16 +437,18 @@ checkBox.DataContext is ListedItem item &&
437
437
438
438
private new void FileList_ContainerContentChanging ( ListViewBase sender , ContainerContentChangingEventArgs args )
439
439
{
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 ;
443
445
444
446
base . FileList_ContainerContentChanging ( sender , args ) ;
445
447
SetCheckboxSelectionState ( args . Item , args . ItemContainer as GridViewItem ) ;
446
448
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 ;
450
452
}
451
453
452
454
private void SetCheckboxSelectionState ( object item , GridViewItem ? lviContainer = null )
@@ -467,7 +469,7 @@ private void SetCheckboxSelectionState(object item, GridViewItem? lviContainer =
467
469
checkbox . Unchecked += ItemSelected_Unchecked ;
468
470
}
469
471
470
- UpdateCheckboxVisibility ( container ) ;
472
+ UpdateCheckboxVisibility ( container , checkbox ? . IsPointerOver ?? false ) ;
471
473
}
472
474
}
473
475
@@ -484,37 +486,35 @@ private void Grid_Loaded(object sender, RoutedEventArgs e)
484
486
itemContainer . ContextFlyout = ItemContextMenuFlyout ;
485
487
}
486
488
487
- private void ItemRow_PointerEntered ( object sender , PointerRoutedEventArgs e )
489
+ private void SelectionCheckbox_PointerEntered ( object sender , PointerRoutedEventArgs e )
488
490
{
489
- UpdateCheckboxVisibility ( sender , true ) ;
491
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , true ) ;
490
492
}
491
493
492
- private void ItemRow_PointerExited ( object sender , PointerRoutedEventArgs e )
494
+ private void SelectionCheckbox_PointerExited ( object sender , PointerRoutedEventArgs e )
493
495
{
494
- UpdateCheckboxVisibility ( sender , false ) ;
496
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
495
497
}
496
498
497
- private void ItemRow_PointerCanceled ( object sender , PointerRoutedEventArgs e )
499
+ private void SelectionCheckbox_PointerCanceled ( object sender , PointerRoutedEventArgs e )
498
500
{
499
- UpdateCheckboxVisibility ( sender , false ) ;
501
+ UpdateCheckboxVisibility ( ( sender as FrameworkElement ) ! . FindAscendant < GridViewItem > ( ) ! , false ) ;
500
502
}
501
503
502
- private void UpdateCheckboxVisibility ( object sender , bool ? isPointerOver = null )
504
+ private void UpdateCheckboxVisibility ( object sender , bool isPointerOver )
503
505
{
504
506
if ( sender is GridViewItem control && control . FindDescendant < UserControl > ( ) is UserControl userControl )
505
507
{
506
- // Save pointer over state accordingly
507
- if ( isPointerOver . HasValue )
508
- control . SetValue ( IsPointerOverProperty , isPointerOver ) ;
509
508
// Handle visual states
510
509
// 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)
512
511
if ( UserSettingsService . FoldersSettingsService . ShowCheckboxesWhenSelectingItems && control . IsSelected
513
- || control . GetValue ( IsPointerOverProperty ) is not false )
512
+ || isPointerOver )
514
513
VisualStateManager . GoToState ( userControl , "ShowCheckbox" , true ) ;
515
514
else
516
515
VisualStateManager . GoToState ( userControl , "HideCheckbox" , true ) ;
517
516
}
518
517
}
518
+
519
519
}
520
520
}
0 commit comments