У меня есть простая реализация ListView
в WPF, которая позволяет мне выбирать несколько элементов в списке, удерживая кнопку мыши и перетаскивая элементы. Однако, удерживая кнопку мыши нажатой, когда я перемещаю мышь за пределы ListView
, с выделением происходит нечто странное. В идеале, я бы хотел, чтобы выбор оставался неизменным, но вместо этого он быстро циклически перебирает все выбранные элементы, оставляя только последний выбранный элемент.
Вот код, есть идеи?
public class MultiSelectListView : ListView
{
private bool m_isSelectionActive;
public bool IsSelectionActive
{
get { return m_isSelectionActive; }
}
protected override DependencyObject GetContainerForItemOverride()
{
return new MultiSelectListViewItem(this);
}
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{
m_isSelectionActive = true;
}
protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
{
m_isSelectionActive = false;
}
}
public class MultiSelectListViewItem : ListViewItem
{
private readonly MultiSelectListView m_parent;
public MultiSelectListViewItem(MultiSelectListView parent)
{
m_parent = parent;
}
protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e)
{
if (m_parent.IsSelectionActive)
IsSelected = true;
}
}