Я реализовал MVVM в WPF, и у меня есть ListView
следующим образом:
<ListView DockPanel.Dock="Top" Name="ListViewMain" ItemsSource="{Binding Items}">
... GridView in ListView.View ...
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding OnSelectionChangedCommand}"
CommandParameter="{Binding SelectedIndex,
ElementName=ListViewMain}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListView>
Всякий раз, когда я меняю выбор, нажимая на любой элемент в ListView
, OnSelectionChangedCommand
вызывается с правильнымSelectedIndex
.
Но когда я изменяю SelectedIndex
программно следующим образом:
ListViewMain.SelectedIndex = 0;
, я получаю -1 в OnSelectionChangedCommand
.Как получить правильный SelectedIndex
независимо от способа изменения выбора?
Обновление
Ответы в WPF Listview SelectionChanged event не объяснитьчто произойдет, если SelectedIndex
установлен программно, и как определить свойство модели представления, которое связано, выполните SelectedIndex
.