우리는 데이터를 검색하기 위해 엔티티 프레임 워크를 사용하고 있습니다. 우리는 컬렉션 뷰 소스를 콤보 상자에 바인딩하여 데이터를 표시하려고합니다. 여기에 CollectionViewSource에 대한 정의는 다음과 같습니다EF와 함께 ItemsSource를 사용하기 전에 "Items collection이 비어 있어야합니다"가져 오기
<CollectionViewSource x:Key="aSICodesControlledEnvironmentViewSource" d:DesignSource="{d:DesignInstance {x:Type AsiEF:ASICodesControlledEnvironment}, CreateList=True}">
AsiEF 엔티티 프레임 워크 어셈블리입니다. 당신은, 우리가 필드 콤보 상자에 표시되지하더라도, 필드 DisplayOrder하여 데이터를 정렬하려는 볼 수 있듯이
<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>
것은, 나는 아직도 생각 : 여기에 콤보 상자에 대한 XAML입니다 CollectionViewSource는 그 필드에 의해 데이터를 소트 할 수 있어야한다.
그러나이 아래로 떨어질 경우 데이터를 검색하고 사용자 컨트롤의로드 이벤트에 콜렉션 뷰 소스의 소스에 할당하려고에 있습니다 시도 할 때 그것은 두 번째 줄에 달려
ComboBoxSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("aSICodesControlledEnvironmentViewSource")));
ComboBoxSource.Source = asiContext.ASICodesControlledEnvironments;
CollectionViewSource 개체 ComboBoxSource의 Source 속성을 할당합니다. asiContext는 AsiEF의 ObjectContext입니다. 던져진 오류는 "ItemsSource를 사용하기 전에 Items 컬렉션이 비어 있어야합니다"입니다. 미안해, 우리가 잘못한 것을 얻지 못해. ItemsSource의 ComboBox에서 XAML에서 할당을 제거하려고 시도했지만 작동하지 않습니다. 그래서, 우리는 어디서 잘못 가고 있습니까?
제안한대로 완료했지만 " 'System.Windows.Data.BindingListCollectionView'보기가 정렬을 지원하지 않습니다."라는 오류 메시지가 나타납니다. Loaded 이벤트에서 ComboBoxSource의 Source 속성을 할당 할 때 오류가 발생했습니다. – Rod
죄송합니다. BindingListCollectionView는 정렬을 지원하기 때문에 이것에 대해서는 잘 모른다. [here] (http://msdn.microsoft.com/en-us/library/system.windows.data.bindinglistcollectionview.sortdescriptions.aspx)를 참조하십시오. – LPL
링크 LPL을 가져 주셔서 감사합니다. 무슨 뜻인지 알겠지만 BindingListCollectionView는 정렬을 지원합니다. 여기에 도달하고 있지만 데이터 소스가 EF에서오고 있기 때문일 수 있습니까? EF에서 가져온 컬렉션을 정렬하는 유일한 방법은 LINQ 식을 사용하는 것입니까? XAML을 사용하고 싶습니다. – Rod