MVVM: liaison à ListBox.SelectedItem?

Comment lier une propriété de modèle de vue à la propriété ListBox.SelectedItem?

J’ai créé une démo MVVM simple pour essayer de résoudre ce problème. Mon modèle de vue possède les propriétés suivantes:

private ObservableCollection p_DisneyCharacters; public ObservableCollection DisneyCharacters { get { return p_DisneyCharacters; } set { p_DisneyCharacters = value; base.FirePropertyChangedEvent("DisneyCharacters"); } } private DisneyCharacter p_SelectedItem; public DisneyCharacter SelectedItem { get { return p_SelectedItem; } set { p_SelectedItem = value; base.FirePropertyChangedEvent("SelectedItem"); } } 

Je veux lier la propriété SelectedItem à l’élément sélectionné dans la zone de liste. Voici le XAML pour la zone de liste:

  

Voici mon problème: La propriété SelectedItem du modèle de vue n’est pas mise à jour lorsque je modifie la sélection dans la zone de liste.

J’ai effectué un test où j’ai temporairement remplacé la propriété SelectedItem du modèle de vue par une propriété SelectedIndex et je l’ai liée à la propriété ListBox.SelectedIndex. Cette propriété a bien été mise à jour – c’est juste la propriété SelectedItem que je ne peux pas utiliser.

Alors, comment puis-je réparer la liaison SelectedItem? Merci de votre aide.

Eh bien, ça y est, gros comme la vie. Dans le XAML. Je suis lié à une propriété de modèle de vue “Selectedtem”. Malheureusement, le nom actuel est “SelectedItem”. Donc, ce code fonctionne réellement – j’ai résolu le problème tôt cet après-midi et j’ai ensuite passé le rest de l’après-midi et toute la soirée à parcourir le Web, avant de remarquer la faute d’orthographe.

Mon épouse m’a dit à 3h00 cet après-midi: “Vous savez, ça va se révéler être quelque chose de petit.” Et il en fut ainsi – une lettre manquante “I”. Eh bien, au moins je peux me coucher maintenant.