Ligação SelectedItem vs SelectedIndex - Quando devo escolher um sobre o outro?

Digamos que você tenha uma coleção observável do tipo de objeto Foo e tenha um ListView personalizado que o usuário selecionará.

Seu objeto de dados vinculado:

// property with getter / setter / INotifyPropertyChanged
ObservableCollection<Foo> MyCollection; 

No XAML:

<ListView ItemsSource={Binding MyCollection} />

É mais apropriado vincular ao SelectedIndex em XAML e criar o seguinte no seu objeto de dados:

int SelectedIndex { get; set; } // also raising property changed notifications
Foo SelectedObject
{
   get { return MyCollection[SelectedIndex]; }
}

Ou, para criar isso e vincular ao SelectedItem em XAML:

Foo SelectedObject { get; set; } // also raising property changed notifications

E porque?

questionAnswers(4)

yourAnswerToTheQuestion