44 votes

MVVM: Liaison à la zone de liste.SelectedItem?

Comment puis-je lier un modèle de vue de la propriété de la zone de liste.Propriété SelectedItem?

J'ai créé un simple MVVM démo pour essayer de comprendre ça. Mon point de vue, le modèle a ces propriétés:

private ObservableCollection<DisneyCharacter> p_DisneyCharacters;
public ObservableCollection<DisneyCharacter> 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 liste déroulante. Voici le code XAML de la zone de liste:

<ListBox ItemTemplate="{StaticResource MasterTemplate}"
         ItemsSource="{Binding Path=DisneyCharacters}" 
         SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}" 
         HorizontalAlignment="Stretch" />

Voici mon problème: Le modèle de vue propriété SelectedItem n'est pas mis à jour quand j'ai changer la sélection dans la zone de liste.

J'ai fait un test où j'ai remplacé temporairement le modèle de vue propriété SelectedItem avec une propriété SelectedIndex, et j'ai lié qu'à la zone de liste.Propriété SelectedIndex. Cette propriété mise à jour sans problème, c'est juste la propriété SelectedItem que je n'arrive pas à travailler.

Alors, comment puis-je résoudre le SelectedItem de liaison? Merci pour votre aide.

57voto

David Veeneman Points 7628

Eh bien, ça y est, grand comme la vie. Dans le code XAML. Je suis de la liaison à un modèle de vue de la propriété "Selectedtem". Malheureusement, le véritable nom est "SelectedItem". Donc, ce code fonctionne réellement--j'ai résolu le problème en ce début d'après-midi et ensuite passé le reste de l'après-midi et la soirée à récurer le web, avant j'ai remarqué l'erreur d'orthographe.

Ma femme m'a dit à 3:00 cet après-midi, "Vous savez, ça va être un petit quelque chose." Et donc, il a fait--une lettre manquante "je". Eh bien, au moins je peux aller au lit maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X