【发布时间】:2011-06-15 20:36:08
【问题描述】:
我在 WPF 中有一个 ListView 的简单实现,它允许我通过按住鼠标按钮并拖动项目来选择列表中的多个项目。但是,在按住鼠标按钮的同时,当我将鼠标移到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;
}
}
【问题讨论】:
标签: wpf listview drag multi-select