2011-05-19 5 views
5

J'ai une classe nommée MyWindow dérivée de Window. J'utiliser le modèle MVVM donc dans le code-behind je le champ suivant:Liaison WPF + MVVM simple

public MyViewModel ViewModel = new MyViewModel(); 

ViewModel contient une collection de Person, et tout ce que je voudrais faire est de lier une ComboBox à cette collection, montrer Person.Name comme l'en-tête de chaque Person.
Je voudrais également avoir un autre champ dans ViewModel qui sera lié à des données à l'élément sélectionné.

S'il vous plaît aidez-moi.

+0

Voir son lien http://stackoverflow.com/questions/561166/binding-wpf-combobox-to-a-custom-list/561427#561427 – biju

Répondre

5

vous avez bien tout d'abord pour régler la datacontext de votre fenêtre sur le viewmdodel dans le constructeur si vous ne l'avez pas déjà fait:

this.DataContext = MyModelView; 

vous pouvez ensuite définir la zone de liste déroulante comme suit:

<ComboBox ItemsSource={Binding Persons} SelectedItem={Binding CurrentPerson,Mode=TwoWay} DisplayMemberPath="Name"/> 

Lorsque des personnes constituent la collection de personnes et que la personne actuelle est la propriété à laquelle la personne sélectionnée sera liée.

2
  1. Affectez modelView à la propriété MyWindow.DataContext. Cela le rend disponible pour la liaison de données.
  2. Définir la liaison de données dans le XAML comme combobox ceci:

<ComboBox ItemsSource="{Binding PersonCollection}" DisplayMemberPath="Name" SelectedValue="{Binding SelectedPerson}" > </ComboBox>

Cela suppose que votre MODELVIEW a une PersonCollection de propriété qui est une collection d'objets personne, un nom de propriété sur l'objet Personne, et une propriété SelectedPerson sur le modelView de type Person.