为什么选定项不显示在组合框中

本文关键字:组合 显示 为什么 | 更新日期: 2023-09-27 17:55:48

在 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"/>

视图模型中的代码:

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

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

为什么选定项不显示在组合框中

根据我对ComboBox的经验,这类问题通常归结为时间。 在评估选定项绑定之前,您的项源(我的网站类型)是否可用?

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

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

项目是否已加载?也许您必须使用数据模板来显示其文本属性。

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

Silverlight 4 中 ComboBox 的转换器