Привязка WPF к коллекции и добавление нового элемента в коллекцию с помощью MVVM - PullRequest
2 голосов
/ 08 июня 2010

Это, вероятно, простой вопрос ...

У меня есть окно со списком сотрудников и # текстовых полей для отображения или ввода данных.Список сотрудников связан с наблюдаемой коллекцией в моей ViewModel, которая считывается из базы данных.

Прямо сейчас у меня есть свойство SelectedEmployee, к которому привязаны текстовые поля, поэтому, если пользователь нажимает на существующего сотрудникаон отображает существующие атрибуты.

Теперь я хочу добавить нового сотрудника из значений, введенных в текстовые поля.Я думал, что пользователь будет вводить значения и затем нажимать «Добавить сотрудника».

Но я не совсем понимаю, к чему будут привязаны текстовые поля.У меня еще нет объекта сотрудника, и для отображения существующих сотрудников мне нужно привязаться к SelectedEmployee.

Я думал об изменении рабочего процесса, когда пользователю нужно нажать «Добавить нового сотрудника», ввести данныеи нажмите «Сохранить», но мне кажется, что я столкнулся с той же проблемой.

Мне кажется, я упускаю что-то очевидное или моя ViewModel неверна для поддержки моего рабочего процесса.

Есть предложения?

Спасибо

Ответы [ 3 ]

1 голос
/ 08 июня 2010

Я предлагаю щелкнуть «Добавить сотрудника», чтобы создать новый объект сотрудника и назначить его для SelectedEmployee.

Теперь, когда я думаю об этом, возможно, было бы лучше создать объект сотрудника, добавить его в свою коллекцию и указать SelectedEmployee на вновь созданный объект.

0 голосов
/ 24 сентября 2010

Не хотите ли вы по умолчанию перейти в состояние создания нового сотрудника?Если вы не хотите сначала нажимать какую-то кнопку, вот что может помочь.

Вы можете поместить коллекцию в IEditableCollection, чтобы объект Employee реализовал IEditableObject.

Затем пользователь нажимал быкнопка, которая вызывает метод addnew () коллекции IeditableCollection (назовем ее IEC), которая добавит в коллекцию новый элемент, который будет находиться в режиме редактирования.

IEC.CancelNew снова удалит объект из коллекцииIEC.CommitNew добавит объект навсегда и прекратит его редактирование.

У вас также будет доступ к EditItem, CommitEdit и CancelEdit для редактирования уже существующего объекта.

Это устраняет необходимость необходимостисначала сохраните объект, если на нем еще нет нужной информации, а затем отредактируйте нужную информацию.

0 голосов
/ 09 июня 2010

Может оказаться полезным пример BookLibrary приложения WPF Application Framework (WAF) Это очень похоже на приложение, которое вы описываете, но оно использует книги вместо сотрудников.: -)

...