エンティティ フレームワークを使用してデータを取得しています。コレクション ビュー ソースをコンボ ボックスにバインドして、データを表示しようとしています。CollectionViewSource の定義は次のとおりです。
<CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource" d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}">
AsiEF は、エンティティ フレームワーク アセンブリです。コンボ ボックスの XAML は次のとおりです。
<ComboBox x:Name="cmbControlledEnvLast30" Margin="480,20,0,0" DisplayMemberPath="ContEnvDesc" SelectedValue="ContEnvDesc" Width="150" FontSize="14"
ItemsSource="{Binding Source={StaticResource aSICodesControlledEnvironmentViewSource}}">
<CollectionViewSource>
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="DisplayOrder" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</ComboBox>
ご覧のとおり、フィールド DisplayOrder でデータを並べ替えようとしていますが、そのフィールドはコンボ ボックスに表示されていませんが、CollectionViewSource はそのフィールドでデータを並べ替えることができるはずだと思います。
しかし、これが失敗するのは、データを取得して、ユーザー コントロールのロードされたイベントでコレクション ビュー ソースのソースに割り当てようとする場合です。
ComboBoxSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("aSICodesControlledEnvironmentViewSource")));
ComboBoxSource.Source = asiContext.ASICodesControlledEnvironments;
CollectionViewSource オブジェクト ComboBoxSource の Source プロパティを割り当てようとすると、2 行目でハングします。asiContext は、AsiEF の ObjectContext です。スローされるエラーは、「ItemsSource を使用する前に、Items コレクションを空にする必要があります」です。申し訳ありませんが、私たちが間違っていることがわかりません。XAML から ItemsSource の ComboBox の割り当てを削除しようとしましたが、うまくいきません。では、どこが間違っているのでしょうか。