Отключение перетаскивания в ListView в WPF - PullRequest
2 голосов
/ 01 марта 2011

Я работаю в WPF для создания компонента ListView.Элементы в списке основаны на другом пользовательском элементе управления, который реагирует на события MouseLeftDown.Список также реагирует на события SelectionChanged.

Прямо сейчас, если я нажимаю на какой-либо элемент в списке и перемещаю курсор, другие элементы, которые я передаю, реагируют на событие SelectionChanged (что ожидается, так как выбор изменяется в соответствии с событием Mouse Down).в виде списка).Мне нужно иметь возможность отключить эту реакцию при ее перетаскивании с помощью перетаскивания, но чтобы она оставалась активной, когда пользователь выбирает элемент в списке.

У кого-нибудь есть идеи, как этого достичь?

Спасибо всем,

РК

1 Ответ

0 голосов
/ 02 августа 2011

Я полагаю, что один из способов, который мог бы вам помочь, - это реализовать ваши собственные обработчики событий 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);
    }
} 
...