我正在使用WPF来创建ListView组件。列表中的项目基于另一个对MouseLeftDown事件作出反应的用户控件。 List还对SelectionChanged事件做出反应。
现在,如果我鼠标按下列表中的任何项目并移动光标,我传递的其他项目会对SelectionChanged事件做出反应(由于选择按照列表视图中的Mouse Down事件进行更改,因此预期)。我需要能够在通过拖动滚动行为时禁用此反应,但是当用户选择列表上的项目时保持活动状态。
有没有人有任何想法如何实现这一目标?
谢谢大家,
RK
答案 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);
}
}