Wpf 得到一个;在使用ItemsSource“之前,Items集合必须为空;带EF

Wpf 得到一个;在使用ItemsSource“之前,Items集合必须为空;带EF,wpf,entity-framework,collectionviewsource,Wpf,Entity Framework,Collectionviewsource,我们使用实体框架来检索数据。我们正在尝试将集合视图源绑定到组合框以显示数据。以下是CollectionViewSource的定义: <CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource" d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}"> 当尝试分配Col

我们使用实体框架来检索数据。我们正在尝试将集合视图源绑定到组合框以显示数据。以下是CollectionViewSource的定义:

<CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource" d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}">

当尝试分配CollectionViewSource对象ComboxSource的Source属性时,它挂起在第二行。asiContext是我们AsiEF的ObjectContext。引发的错误是,“在使用ItemsSource之前,Items集合必须为空”。对不起,我不明白我们做错了什么。我已经尝试从XAML中删除ItemsSource组合框中的赋值,但这不起作用。那么,我们哪里出了问题?

我认为您应该在
CollectionViewSource
定义中声明
SortDescriptions

<CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource"
                      d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="DisplayOrder" />
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

我刚刚按照您的建议执行了操作,但收到了错误消息,“'System.Windows.Data.BindingListCollectionView'视图不支持排序。”在加载的事件中分配ComboBoxSource的Source属性时收到了该错误。抱歉。我对此一无所知,因为BindingListCollectionView确实支持排序。谢谢你的链接,LPL。我明白你的意思,BindingListCollectionView支持排序。我现在说到这里,但可能是因为数据源来自EF吗?对来自EF的集合进行排序的唯一方法是使用LINQ表达式吗?我们宁愿使用XAML。也许这个链接可以帮助你:。谢谢你,LPL,我想这确实解决了这个问题。
ComboBoxSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("aSICodesControlledEnvironmentViewSource")));
ComboBoxSource.Source = asiContext.ASICodesControlledEnvironments;
<CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource"
                      d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="DisplayOrder" />
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>
<ComboBox x:Name="cmbControlledEnvLast30"
          ItemsSource="{Binding Source={StaticResource aSICodesControlledEnvironmentViewSource}}">

</ComboBox>