2011-05-19 25 views
5

Tengo una clase llamada MyWindow derivada de Window. Puedo utilizar el patrón MVVM por lo que en código subyacente tengo el siguiente campo:Enlace WPF + MVVM simple

public MyViewModel ViewModel = new MyViewModel(); 

ViewModel contiene una colección de Person, y todo lo que me gustaría hacer es vincular una ComboBox a esta colección, como mostrar Person.Name el encabezado para cada Person.
También me gustaría tener otro campo en ViewModel que estará vinculado al elemento seleccionado.

Por favor, ayúdame.

+0

Eche un vistazo a su enlace http://stackoverflow.com/questions/561166/binding-wpf-combobox-to-a-custom-list/561427#561427 – biju

Respuesta

5

Bueno en primer lugar usted tiene que fijar el DataContext de la ventana a la viewmdodel en el constructor si no lo ha hecho:

this.DataContext = MyModelView; 

entonces se puede establecer el cuadro combinado de la siguiente manera:

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

Donde las personas son la colección de personas y la persona actual es la propiedad a la que la persona seleccionada estará obligada.

2
  1. Asigna el modelView a la propiedad MyWindow.DataContext. Esto lo hace disponible para el enlace de datos.
  2. Definir los datos de unión en el xaml cuadro combinado de la siguiente manera:

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

Esto supone que su modelview tiene una PersonCollection propiedad, que es una colección de objetos Persona, una propiedad Name del objeto persona, y una propiedad SelectedPerson en el modelo Vista del tipo Persona.