comboboxedit привязывает выбранное значение к полю с другим типом объектов в itemssource - PullRequest
0 голосов
/ 30 июня 2011

Я использую wpf и шаблон MVVM. Мне нужно привязать мой comboboxedit ItemsSource к коллекции класса User. Он содержит поле Employee, которое содержит строковое поле FullName. Мне нужно привязать выбранное значение FullName к строке Field другого объекта в моей ViewModel (Document-> UserFullName). Как я могу это сделать.

1 Ответ

0 голосов
/ 30 июня 2011

Если я вас правильно понимаю, у вас есть ComboBox, связанный с Списком пользовательских экземпляров. Класс User имеет свойство типа Employee, а класс Employee имеет свойство FullName типа string. Viewmodel также имеет свойство типа Document, а класс Document имеет свойство UserFullName типа string. Когда вы выбираете значение (пользователь) в ComboBox, вы хотите установить значение FullName (User.Employee.FullName) для свойства UserFullName Document (Document.UserFullName).

Правильно?

Если это единственное, что вы хотите сделать, возможно, самым простым решением было бы не связывать ComboBox с набором пользовательских экземпляров, а с набором строк, который является FullName этих пользователей (из Employee). Эту коллекцию не составит труда создать, просто просматривая список пользователей. Если вы связываете ComboBox с набором строк, то вы можете просто привязать SelectedValue ComboBox непосредственно к UserFullName документа (Document.UserFullName).

Другим решением было бы иметь свойство SelectedUser типа User в вашей модели представления и привязать SelectedValue ComboBox к этому. Всякий раз, когда значение этого изменения вы также устанавливаете значение Document.UserFullName, например:

private User _selectedUser;
public User SelectedUser
{
    get
    {
        _return _selectedUser;
    }
    set
    {
        if (value != _selectedUser)
        {
            _selectedUser = value;
            Document.UserFullName = _selectedUser.Employee.FullName;
            OnPropertyChanged("SelectedUser");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...