Как привязать данные таблицы к Combobox?

Добрый день, в базе данных есть 2 таблицы, в проекте они представлены так:
Model
public class Employee
    {
        public int Id { get; set; }
        public string Surname { get; set; }
        public string Name { get; set; }
        public string Patronymic { get; set; }
        public DateTime BirthDate { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public int TitleId { get; set; }
        public Title Title { get; set; }
    }

public class Title
    {
        public int Id { get; set; }

        [Column("Title")]
        [NotMapped]
        public string Name { get; set; }
        public List<Employee> Employees { get; set; }
    }


Необходимо чтобы у всех сотрудников в поле "Должность"(Title) вместо идентификатора было конкретное значение и его можно было изменять, путем выбора иной должности из выпадающего списка.
Мои мысли.
Первым делом, необходимо записать все данные из таблицы "Должность"(Title) в коллекцию. Как и где это делать? Создавать отдельный класс?
А следующим делом уже привязать как-то так?
<DataGridComboBoxColumn ItemsSource="{Binding ListTitles}"
                                        DisplayMemberPath="Name"
                                        SelectedValuePath="{Binding Path=TitleId}"
                                         Header="Должность"/>

Где ListTitles - это коллекция должностей
  • Вопрос задан
  • 1446 просмотров
Пригласить эксперта
Ответы на вопрос 1
FoggyFinder
@FoggyFinder
Все правильно, хотя, возможно, вам больше по душе придется стандартный ComboBox, а не
DataGridComboBoxColumn:

<DataGridTemplateColumn Header="Должность">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox
                 HorizontalContentAlignment="Center"
                 ItemsSource="{Binding DataContext.Titles, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
                 SelectedItem="{Binding Title}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>


Будьте внимательны, в примере выше предполагается, что
коллекция Titles находится на том же уровне (классе), что и коллекция Employee.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы