显示Databound WPF ComboBox的默认值
我有一个数据绑定WPF comboxbox,我使用SelectedValuePath
属性根据对象的文本以外的东西选择一个选定的值。 这可能是最好用一个例子解释的:
这个东西的datacontext看起来像这样:
DataContext = new MyDataContext { Items = { new DataItem{ Name = "Jim", Id = 1 }, new DataItem{ Name = "Bob", Id = 2 }, }, SelectedItemId = -1, };
当我显示预先填充的数据时,这一切都很好,其中SelectedItemId
与有效的Item.Id
匹配。
问题是,在新项目案例中, SelectedItemId
未知。 WPF所做的是将combobox显示为空白。 我不想要这个 。 我想禁止combobox中的空白项; 我希望它显示列表中的第一项。
这可能吗? 我可以编写一些代码来明确地预先设置SelectedItemId
,但由于UI的缺点,我不得不改变我的数据模型。
我认为你将不得不在这里做一些手工工作来获得这种行为。 无论SelectedItemId是否匹配,您可以在首次显示ComboBox时检入代码,然后根据该代码更改所选索引。 或者,如果您知道如果没有相应的项目,SelectedItemId将始终为-1,则可以使用数据触发器。
方法1:
if (!DataContext.Items.Exists(l => l.Id == DataContext.SelectedItemId)) { MyComboBox.SelectedIndex = 0; //this selects the first item in the list }
方法2:
您可以使用此样式触发器:如果selecteditem为null,则选择第一个元素。