在WPF中禁用ListView中的拖动滚动

时间:2011-03-01 20:06:39

标签: wpf listview mouseevent drag selectionchanged

我正在使用WPF来创建ListView组件。列表中的项目基于另一个对MouseLeftDown事件作出反应的用户控件。 List还对SelectionChanged事件做出反应。

现在,如果我鼠标按下列表中的任何项目并移动光标,我传递的其他项目会对SelectionChanged事件做出反应(由于选择按照列表视图中的Mouse Down事件进行更改,因此预期)。我需要能够在通过拖动滚动行为时禁用此反应,但是当用户选择列表上的项目时保持活动状态。

有没有人有任何想法如何实现这一目标?

谢谢大家,

RK

1 个答案:

答案 0 :(得分:0)

我相信可以帮助您的方法之一是实现您自己的项目的MouseUp和MouseDown事件处理程序,以选择MouseUp而不是MouseDown上的项目。你可以从这样的样本开始:

public class MyListView : ListView
{
    protected override DependencyObject GetContainerForItemOverride()
    {
        return new MyListViewItem();
    }
}

public class MyListViewItem : ListViewItem
{
    protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
    {
        return;
    }

    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonDown(e);
    }
}