Enlace SelectedItem vs SelectedIndex: ¿cuándo debo elegir uno sobre el otro?

Digamos que tiene una colección observable de tipo de objeto Foo, y tiene un ListView personalizado que el usuario seleccionará.

Su objeto de datos enlazado:

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

En XAML:

<ListView ItemsSource={Binding MyCollection} />

¿Es más apropiado enlazar el SelectedIndex en XAML y crear lo siguiente en su objeto de datos:

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

O para crear esto y vincularlo al elemento seleccionado en XAML:

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

¿Y por qué?

Respuestas a la pregunta(4)

Su respuesta a la pregunta