Простая привязка WPF + MVVM - PullRequest
7 голосов
/ 19 мая 2011

У меня есть класс с именем MyWindow, производный от Window. Я использую шаблон MVVM, поэтому в коде у меня есть следующее поле:

public MyViewModel ViewModel = new MyViewModel();

ViewModel содержит коллекцию Person, и все, что я хотел бы сделать, это связать ComboBox с этой коллекцией, показать Person.Name в качестве заголовка для каждого Person.
Я также хотел бы иметь другое поле в ViewModel, которое будет привязано к данным для выбранного элемента.

Пожалуйста, помогите мне.

Ответы [ 2 ]

5 голосов
/ 19 мая 2011

Ну, во-первых, вы должны установить datacontext вашего окна для viewmdodel в конструкторе, если вы еще этого не сделали:

this.DataContext = MyModelView;

Затем вы можете установить ComboBox следующим образом:

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

Где Персоны - это Коллекция Людей, а Текущее Лицо - это Собственность, к которой будет привязан выбранный человек.

2 голосов
/ 19 мая 2011
  1. Назначьте modelView свойству MyWindow.DataContext.Это делает его доступным для привязки данных.
  2. Определите привязку данных в выпадающем списке xaml следующим образом:

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

Предполагается, что ваш модель имеетсвойство PersonCollection, которое является коллекцией объектов Person, свойством Name в объекте Person и свойством SelectedPerson в модельном представлении типа Person.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...