I have a databound WPF comboxbox where I am using the SelectedValuePath
property to select a selected value based on something other than the object's text. This is probably best explained with an example:
<ComboBox ItemsSource="{Binding Path=Items}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValue="{Binding Path=SelectedItemId}"/>
The datacontext for this thing looks like this:
DataContext = new MyDataContext
{
Items = {
new DataItem{ Name = "Jim", Id = 1 },
new DataItem{ Name = "Bob", Id = 2 },
},
SelectedItemId = -1,
};
This is all well and good when I'm displaying pre-populated data, where the SelectedItemId
matches up with a valid Item.Id
.
The problem is, in the new item case, where the SelectedItemId
is unknown. What WPF does is show the combo box as blank. I do not want this. I want to disallow blank items in the combo box; I would like it to display the first item in the list.
Is this possible? I could write some code to explicitly go and set the SelectedItemId
beforehand, but it doesn't seem right to have to change my data model because of a shortcoming in the UI.