/ / Seleccione ListBoxItem en MouseUp WPF - wpf, listbox, mouse

Seleccione ListBoxItem en MouseUp WPF - wpf, listbox, mouse

Tengo un ListBox con selección múltiple. Y estoy haciendo la operación de arrastrar y soltar en ella. Utilicé Ctrl + A para seleccionar todos los elementos. Pero una vez que hago clic en un elemento para comenzar a arrastrar, los elementos se deseleccionan. ¿Hay alguna forma de seleccionar / deseleccionar listboxitem en el mouse arriba?

Respuestas

4 para la respuesta № 1

El ListBoxItem anula su OnMouseLeftButtonDown e invoca un método en el ListBox que contieneque maneja la selección. Por lo tanto, si desea pasar el mouse sobre un elemento del cuadro de lista seleccionado e iniciar un arrastre, deberá comenzar a hacerlo antes de que esto suceda en el ListBoxItem. Así que podrías intentar manejar el Vista previaMouseLeftButtonDown en el cuadro de lista y verificando e.OriginalSource. Si ese es un ListBoxItem o un elemento dentro del elemento del cuadro de lista (tendrá que subir por el árbol visual), entonces puede iniciar su operación de arrastre.

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(....);
}

}