#c# #wpf
#c# #wpf
Вопрос:
У меня есть поле со списком, в котором я привязываю свою модель. Я использую DataTemplate для отображения данных
<ComboBox x:Name="comboBoxShift">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ShiftId}" Visibility="Hidden"/>
<TextBlock Text="{Binding ShiftType}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
И свяжите его с comboBoxShift.ItemsSource = _db.Shifts.ToList();
, где _db
находится контекст моей базы данных.
Из другого окна я прохожу ShiftId
. Как я могу настроить отображение текущего элемента combobox ShiftType
.
Комментарии:
1. Кроме того, вы можете установить
DisplayMemberPath="ShiftType"
вместо ItemTemplate, вы могли бы установить,SelectedValuePath="ShiftId"
а затем назначить или привязатьSelectedValue
к выбранному идентификатору.
Ответ №1:
Я считаю, что ваш дизайн немного испорчен. Вам не нужно использовать шаблон данных для вашей цели, а просто установите DisplayMemeberPath
.
XAML
<ComboBox x:Name="comboBoxShift" DisplayMemberPath="ShiftType">
Затем для выбора из кода
comboBoxShift.SelectedItem = My_Shift;
Примечание: Если вы хотите получить объект Shift из выбранного элемента combobox, вот как вы могли бы это сделать.
Shift shift = (Shift)comboBoxShift.SelectedItem;
Ответ №2:
Поскольку вы скрываете один из текстовых блоков, это даст желаемый результат:
<ComboBox x:Name="comboBoxShift" DisplayMemberPath="ShiftType">
</ComboBox>