我有一个ComboBox,想将ComboBox中的值预先填充为预设值。
我有一个食物类别列表,它是一个名为 ItemCategories 的ObservableCollection,它是一个属性。列表有5种不同的类型。
我还有一个名为ItemCategory的选定类别属性,类型为ItemCategory。
ItemCategory具有两个属性,类别和PK_ItemCategoryId。
到目前为止,这就是我所拥有的
组合框的ItemSource绑定到ViewModel中的属性。
private ObservableCollection<ItemCategory> _itemCategories;
public ObservableCollection<ItemCategory> ItemCategories
{
get
{ return _itemCategories; }
set
{
_itemCategories = value;
OnPropertyChanged("ItemCategories");
}
}
private ItemCategory _itemCategory;
public ItemCategory ItemCategory
{
get { return _itemCategory; }
set
{
_itemCategory = value;
OnPropertyChanged("ItemCategory");
}
}
当用户打开应用程序时,我想做的是用列表中的一个项目预填充combox中的值。下面是我要实现的示例。
如何使用MVVM和WPF来实现这一目标?
答案 0 :(得分:1)
如果您在ViewModel的ctor中将默认项(例如_itemCategories的第一项)设置为_itemCategory,则应该起作用,或者稍后在您的ItemCategory属性上设置。
它必须是_itemsCategories中的一项-不是ItemCategory的新实例!
答案 1 :(得分:1)
由于您的SelectedItem
属性设置为Mode=TwoWay
,因此可以在ViewModel
中设置属性,如下所示:
//if you imported LINQ
if(ItemCategories != null && ItemCategories.Any())
ItemCategory = ItemCategories.First();
//without LINQ
if(ItemCategories != null && ItemCategories.Count > 0)
ItemCategory = ItemCategories[0];
这将获取ItemCategories
中的第一项(如果有),并将其设置为SelectedItem
。
UI
将通过OnPropertyChanged()
通知。