Все, что вам нужно сделать, как упомянул Томас, - это связать атрибут SelectedItem списка со свойством в модели представления. Чтобы было понятно, вот пример.
Вот мой взгляд
<Grid x:Name="LayoutRoot" Background="White">
<ListView ItemsSource="{Binding Contacts}" SelectedItem="{Binding SelectedContact, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
А вот и моя ViewModel
public class MainViewModel: ViewModelBase
{
ObservableCollection<ContactViewModel> contacts;
ContactViewModel selectedContact;
public ContactViewModel SelectedContact
{
get { return selectedContact; }
set {
selectedContact = value;
base.OnPropertyChanged("SelectedContact");
}
}
public ObservableCollection<ContactViewModel> Contacts
{
get { return contacts; }
set {
contacts = value;
base.OnPropertyChanged("Contacts");
}
}
}
Каждый раз, когда вы пытаетесь изменить выбор в списке, вы входите в установщик SelectedContact.
set
{
contacts = value;
base.OnPropertyChanged("Contacts");
}
Благодаря этому вы узнаете, что выбранный контакт изменился.
Используя свойство SelectedContact, вы также узнаете, какой элемент в вашей коллекции выбран.
Вы также можете привязать свойство Collection в ViewModel к атрибуту SelectedItems ListView, если вы хотите реализовать множественный выбор.