为什么SelectedItem不会显示在组合框中

时间:2011-05-09 09:41:49

标签: c# silverlight data-binding caliburn devforce

使用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); }
    }

一旦我使用组合框设置网站类型(下拉列表中存在类型),它就会正确显示类型并更改数据库中的类型。我错过了什么,为什么不想第一次显示现有的类型?

3 个答案:

答案 0 :(得分:2)

根据我对ComboBox的经验,这些问题通常归结为时间问题。在评估SelectedItem绑定之前,您的ItemSource(MySiteTypes)是否可用?

答案 1 :(得分:2)

好的,我找到了解决方案(Myles J很接近):

在加载来自itemsource的项目之前评估所选项目,从而导致不显示所选项目。在完成填充MySiteTypes的异步查询之后,我需要为MySite调用NotifyOfPropertyChange。

答案 2 :(得分:0)

物品是否已加载?也许你必须使用DataTemplate来显示他们的文本属性。

如果它们是字符串,我最近遇到了类似的问题,并且必须使用转换器来使用selectedIndex:

Converter for ComboBox in Silverlight 4