2

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

现在,如果我将鼠标放在列表中的任何项目上并移动光标,我传递的其他项目都会对 SelectionChanged 事件做出反应(这是预期的,因为选择会根据列表视图中的 Mouse Down 事件发生变化)。我需要能够通过拖动滚动行为禁用此反应,但在用户选择列表中的项目时使其保持活动状态。

有谁知道如何实现这一目标?

感谢大家,

RK

4

1 回答 1

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);
    }
} 
于 2011-08-02T09:15:53.683 回答