2011-05-09 78 views
2

在XAML中使用下面的绑定时,所选项目不会显示在组合框中(具体而言,当前类型不会显示在站点上)。我们正在使用caliburn微框架和DevForce Ideablade。 MySite是一个Ideablade实体。为什么SelectedItem不显示在组合框中

<ComboBox Grid.Column="3" Grid.Row="3" 
      ItemsSource="{Binding MySiteTypes}" 
      DisplayMemberPath="description" 
      SelectedItem="{Binding MySite.SiteType, Mode=TwoWay}" 
      SelectedValuePath="description"/> 

代码在视图模型:

private BindableCollection<SiteType> _mySiteTypes; 
    public BindableCollection<SiteType> MySiteTypes 
    { 
     get { return _mySiteTypes; } 
     set { _mySiteTypes = value; NotifyOfPropertyChange(() => MySiteTypes); } 
    } 

一旦予设置站点类型与组合框(的类型是存在于下拉),它正确显示的类型和在数据库中的改变的类型。我错过了什么,为什么它不想第一次显示现有类型?

回答

2

好的,我发现了溶液(迈尔斯Ĵ接近):从所述的ItemSource项目之前

选择的项目进行评价装载使所选择的项目不被显示。我需要调用NotifyOfPropertyChange for MySite AFTER填充MySiteTypes完成的异步查询。

+0

也许这也是我的问题。我稍后再尝试... – zapico 2011-05-09 12:25:07

0

这些项目是否加载?也许你将不得不使用DataTemplate来显示他们的文本属性。

如果他们是字符串,我最近有一个类似的问题,必须通过转换器使用的selectedIndex:

Converter for ComboBox in Silverlight 4

2

从我对ComboBox经验,这些类型的问题往往归结为时机。您的ItemSource(MySiteTypes)在SelectedItem绑定评估之前是否可用?

+0

你是对的,这是一个时间问题 – 2011-05-09 11:13:17