2016-10-28 2 views
-2

У меня есть ObservableCollection из JobTitles, которые я хочу привязать к ComboBox. Используя привязку через XAML, мне не повезло, поэтому я это сделал;Binding a ComboBox

foreach (PresetModel jobTitle in JobTitles) 
{ 
    var _newItem = new ComboBoxItem(); 
    _newItem.Content = jobTitle.Text; 
    _newItem.Tag = jobTitle.ID; 
    jobTitleComboBox.Items.Add(_newItem); 
} 

Это на самом деле добавить все JobTitles в ComboBox (дальше, чем я получил с Биндигом), однако теперь проблема в том, что, когда пользователь выбирает сотрудника, который имеет JobTitle, я хочу, чтобы выбрать соответствующий JobTitle в ComboBox.

В идеале я бы сделал это;

jobTitleComboBox.Text = currentUser.JobTitle;

Однако это не работает. У меня есть только доступ к тексту Employee JobTitle, а не идентификатор заголовка, который, как мне кажется, не помогает. Как я могу отобразить соответствующую должность для Работника?

+0

что 'currentUser' в этом сценарии? –

+0

Это элемент модели «Сотрудник». – CBreeze

+2

«Использование привязки через XAML мне не повезло» - пожалуйста, опубликуйте свои усилия XAML. Код позади - неправильный путь в вашем случае. – Dennis

ответ

4

Если у вас есть коллекция с именем: JobsCollection. И в этой коллекции у вас есть JobId, JobName ... и т. Д. Атрибуты. Затем на вашем XAML вы могли бы просто написать:

ComboBox ItemsSource="{Binding JobsCollection}" DisplayMemberPath="JobName" 

Так,
DisplayMemberPath -> Какое свойство вы хотите показать в списке COMBOBOX
Binding -> Имя ObservableCollection вы хотите связать.

Edit: Как XAML элемент будет выглядеть

<ComboBox ItemsSource="{Binding JobsCollection}" 
      SelectedItem={Binding SelectedItemName} 
      DisplayMemberPath="JobName" /> 
+0

И когда пользователь выбирает Employee с JobTitle, как выбран элемент ComboBox? – CBreeze

+0

@CBreeze, добавив другое свойство SelectedItem = "{Binding YourPropertyHere}" – eg16

+0

@CBreeze Проверьте изменения. SelectedItemName -> Вы выбираете имя, которое хотите использовать – eg16

0

Установите требуется выбранный индекс пункт:

 jobTitleComboBox.SelectedItem = jobTitleComboBox.Items[1];