@@ -21,6 +21,7 @@ public class RectangleSelection_ListViewBase : RectangleSelection
21
21
private Point originDragPoint ;
22
22
private Dictionary < object , System . Drawing . Rectangle > itemsPosition ;
23
23
private List < object > prevSelectedItems ;
24
+ private List < object > prevSelectedItemsDrag ;
24
25
private ItemSelectionStrategy selectionStrategy ;
25
26
26
27
public RectangleSelection_ListViewBase ( ListViewBase uiElement , Rectangle selectionRectangle , SelectionChangedEventHandler selectionChanged = null )
@@ -92,6 +93,17 @@ private void RectangleSelection_PointerMoved(object sender, PointerRoutedEventAr
92
93
var scrollIncrement = Math . Min ( 20 - currentPoint . Position . Y , 40 ) ;
93
94
scrollViewer . ChangeView ( null , verticalOffset - scrollIncrement , null , false ) ;
94
95
}
96
+
97
+ if ( selectionChanged != null )
98
+ {
99
+ var currentSelectedItemsDrag = uiElement . SelectedItems . Cast < object > ( ) . ToList ( ) ;
100
+ if ( prevSelectedItemsDrag == null || ! prevSelectedItemsDrag . SequenceEqual ( currentSelectedItemsDrag ) )
101
+ {
102
+ // Trigger SelectionChanged event if the selection has changed
103
+ selectionChanged ( sender , null ) ;
104
+ prevSelectedItemsDrag = currentSelectedItemsDrag ;
105
+ }
106
+ }
95
107
}
96
108
}
97
109
@@ -195,6 +207,8 @@ private void RectangleSelection_PointerReleased(object sender, PointerRoutedEven
195
207
selectionStrategy = null ;
196
208
selectionState = SelectionState . Inactive ;
197
209
210
+ prevSelectedItemsDrag = null ;
211
+
198
212
e . Handled = true ;
199
213
}
200
214
0 commit comments