В моем приложении WPF у меня есть ListView с функцией, выполняющейся при изменении выбора. После получения индекса выбранного элемента, я хочу очистить выбор. Но если я сделаю это, index
всегда будет -1
, а не индексом выбранного элемента.
Этот код работает:
private void ListViewItems_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var index = ListViewItems.SelectedIndex;
Note note = MainWindow.dBConnector.NotesList[index];
ShowNote(note);
}
Но когда я пытаюсь сбросить выбор в любое время позже индекс выходит за пределы диапазона (устанавливается на -1)
private void ListViewItems_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//index is somehow here already -1
var index = ListViewItems.SelectedIndex;
//This causes a System.ArgumentOutOfRangeException (because there is no item at -1)
Note note = MainWindow.dBConnector.NotesList[index];
ShowNote(note);
//This causes the error
ListViewItems.SelectedIndex = -1;
}
Я пробовал разные методы для сброса выбора, ничего не меняется. Я даже попытался сбросить выделение на более позднем этапе программы, но ничего не изменилось, индекс всегда равен -1.
Почему это происходит и как я могу решить эту проблему?