У меня есть поле со списком WPF с привязкой к данным, где я использую свойство SelectedValuePath
, чтобы выбрать выбранное значение на основе чего-то другого, чем текст объекта. Это, вероятно, лучше всего объяснить на примере:
<ComboBox ItemsSource="{Binding Path=Items}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValue="{Binding Path=SelectedItemId}"/>
Текст данных для этой вещи выглядит так:
DataContext = new MyDataContext
{
Items = {
new DataItem{ Name = "Jim", Id = 1 },
new DataItem{ Name = "Bob", Id = 2 },
},
SelectedItemId = -1,
};
Это хорошо, когда я отображаю предварительно заполненные данные, где SelectedItemId
совпадает с действительным Item.Id
.
Проблема в новом элементе , где SelectedItemId
неизвестен. Что делает WPF, так это показывает поле со списком как пустое. Я не хочу этого . Я хочу запретить пустые элементы в поле со списком; Я бы хотел, чтобы отображался первый элемент в списке.
Возможно ли это? Я мог бы написать некоторый код, чтобы явно пойти и установить SelectedItemId
заранее, но кажется неправильным менять мою модель данных из-за недостатка в пользовательском интерфейсе.