【问题标题】:Why does the SelectedItem not display in combobox为什么 SelectedItem 不显示在组合框中
【发布时间】:2011-08-21 13:30:59
【问题描述】:

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

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

【问题讨论】:

    标签: c# silverlight data-binding caliburn devforce


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        项目是否已加载?也许您必须使用 DataTemplate 来显示它们的文本属性。

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

        Converter for ComboBox in Silverlight 4

        【讨论】:

          猜你喜欢
          • 2014-07-24
          • 2021-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-07
          • 1970-01-01
          • 2021-09-12
          • 2017-04-26
          相关资源
          最近更新 更多