使用XAML中的以下绑定,所选项目不会显示在组合框中(具体而言,不显示站点的当前类型)。我们正在使用caliburn微框架和DevForce Ideablade。 MySite是Ideablade实体。
<ComboBox Grid.Column="3" Grid.Row="3"
ItemsSource="{Binding MySiteTypes}"
DisplayMemberPath="description"
SelectedItem="{Binding MySite.SiteType, Mode=TwoWay}"
SelectedValuePath="description"/>
ViewModel中的代码:
private BindableCollection<SiteType> _mySiteTypes;
public BindableCollection<SiteType> MySiteTypes
{
get { return _mySiteTypes; }
set { _mySiteTypes = value; NotifyOfPropertyChange(() => MySiteTypes); }
}
一旦我使用组合框设置网站类型(下拉列表中存在类型),它就会正确显示类型并更改数据库中的类型。我错过了什么,为什么不想第一次显示现有的类型?
答案 0 :(得分:2)
根据我对ComboBox的经验,这些问题通常归结为时间问题。在评估SelectedItem绑定之前,您的ItemSource(MySiteTypes)是否可用?
答案 1 :(得分:2)
好的,我找到了解决方案(Myles J很接近):
在加载来自itemsource的项目之前评估所选项目,从而导致不显示所选项目。在完成填充MySiteTypes的异步查询之后,我需要为MySite调用NotifyOfPropertyChange。
答案 2 :(得分:0)
物品是否已加载?也许你必须使用DataTemplate来显示他们的文本属性。
如果它们是字符串,我最近遇到了类似的问题,并且必须使用转换器来使用selectedIndex: