WPF; Как Премахване на избора от всички мои избрани елементи, когато щракнете върху празно място в моя ListView

Когато имам няколко (или дори един) selected items и натисна просто click на празно място в моя ListView (празно място = не ред), искам да премахна отметката от всички мои избрани елементи.

Това е моята функция за демаркиране на всички елементи:

private void DeselectAllListViewItems()
{
    MyListView.SelectedItems.Clear();
} 

Опитвам се да взема избрания индекс с тази функция:

private void MyListView_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (MyListView.SelectedIndex == -1)
        DeselectAllListViewItems();
}

Но в случай, че имам няколко избрани елемента (или един...), избраният индекс никога няма да бъде -1. И така, как мога да различа, че моят mouse click е на празно място, а не на ред с елементи?


person Verint Verint    schedule 09.06.2015    source източник
comment
възможен дубликат на Как да обработя събитието, когато щракнете върху празно пространство?   -  person goobering    schedule 09.06.2015
comment
Това отговаря ли на въпроса ви? WPF Listbox премахва селекцията чрез щракване върху празно място   -  person StayOnTarget    schedule 14.05.2020


Отговори (1)


Кодът по-долу работи доста добре.

private void MyListView_MouseDown(object sender, MouseButtonEventArgs e)
{
    HitTestResult r = VisualTreeHelper.HitTest(this, e.GetPosition(this));
    if (r.VisualHit.GetType() != typeof(ListBoxItem))
        listView1.UnselectAll();
}

WPF Listbox премахва селекцията чрез щракване върху празно място

person J3soon    schedule 26.12.2015