2
我有一個ListBox有多個選擇。我正在做拖放操作。我用Ctrl + A來選擇所有項目。但是,一旦我點擊一個項目開始拖動,項目就被取消選中。有什麼方法可以在鼠標上選擇/取消選擇listboxitem。在MouseUp上選擇ListBoxItem WPF
我有一個ListBox有多個選擇。我正在做拖放操作。我用Ctrl + A來選擇所有項目。但是,一旦我點擊一個項目開始拖動,項目就被取消選中。有什麼方法可以在鼠標上選擇/取消選擇listboxitem。在MouseUp上選擇ListBoxItem WPF
ListBoxItem覆蓋它的OnMouseLeftButtonDown並在包含處理選擇的ListBox上調用一個方法。所以如果你想在選定的列表框項目上按下鼠標並初始化一個拖動,你需要在ListBoxItem發生這種情況之前啓動它。因此,您可以嘗試處理ListBox上的PreviewMouseLeftButtonDown並檢查e.OriginalSource。如果這是ListBoxItem或列表框項目中的元素(您需要沿着可視化樹走),那麼您可以啓動拖動操作。例如。
private void OnPreviewLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var source = e.OriginalSource as DependencyObject;
while (source is ContentElement)
source = LogicalTreeHelper.GetParent(source);
while (source != null && !(source is ListBoxItem))
source = VisualTreeHelper.GetParent(source);
var lbi = source as ListBoxItem;
if (lbi != null && lbi.IsSelected)
{
var lb = ItemsControl.ItemsControlFromItemContainer(lbi);
e.Handled = true;
DragDrop.DoDragDrop(....);
}
}