2

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

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

4

3 回答 3

2

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

于 2011-05-09T10:56:15.910 回答
2

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

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

于 2011-05-09T11:12:26.913 回答
0

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

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

Silverlight 4 中的 ComboBox 转换器

于 2011-05-09T10:01:32.830 回答