2017-12-05 23 views
0

ListView은 XAML을 통해 ObservableCollection에 바인딩됩니다. 필자는 코드에서 정렬 작업을하곤했지만, 정렬 작업을 새로 고쳐야한다는 점을 염두에 두어야 할 많은 작업이 있습니다.XAML에서 ObservableCollection에 바인딩 된 ListView를 정렬합니다.

그래서 좀 더 깨끗하게 만들고 XAML에서 직접 동적으로 정렬하려고했습니다.

불행히도 태그/속성을 찾을 수 없습니다. 내가 찾은 모든 예제는 최소한 XAML에서 지원되지 않는 것으로 보이는 <CollectionViewSource.SortDescription>을 사용하는 WPF 응용 프로그램을위한 것입니다.

내가 사용한 UWP 커뮤니티 툴킷에서 AdvancedCollectionView 컨트롤을 찾았습니다. 이 컨트롤은 기존 ObservableCollection을 사용하며 ListView (소스)는 이제이 AdvancedCollectionView에 바인딩됩니다.

작동하는 것 같습니다. 그래서 무엇이 문제입니까? 1) 많은 라이센스를 가진 거대한 Nu-Get 패키지를 사용해야합니다 :-)) 2) ListView (단일 항목)에 바인딩 된 클래스에 대해 INotifyPropertyChanged를 구현하여 2) ListView는 속성 (예 : 항목의 제목이 변경됩니다. 이것은 AdvancedCollectionView로 바뀌기 전에 이전에 사용되었지만 이제는 이벤트 발생자가 NullReferenceExcpetion을 던졌습니다.

그래서 이제 바인딩 된 속성으로 ListView를 정렬하는 간단한 작업을 수행하는 Out-of-the-Box 방법이 없는지 스스로에게 묻습니다.

+0

:

나는 버그를 reporeted 및 수정 커뮤니티 툴킷 버전 2.2에있을 것입니다 것 같습니다? 코드가없는 xaml에서 그냥하고 싶다는 뜻입니까? 심지어 'AdvancedCollectionView'는 뒤에 정렬 코드를 수행합니다. 패키지 참조가 필요합니다. 요구 사항을 충족시킬 수 있습니까? –

+0

커뮤니티 툴킷은 오픈 소스이기 때문에 자신 만의 도우미 클래스를 만드는 데 필요한 섹션을 참조 할 수 있습니다. –

+0

나는 ObservableCollection을 Sort() 확장 메소드로 "수동으로"정렬했다. – Patric

답변

0

분명히 Filter 속성이 설정되지 않은 버그가 있기 때문에 AdvancedCollectionView 문제가 발생합니다.

이 나는 ​​소스와 NuGet 패키지를 대체하고 줄에 NullReferenceException이 던진 곳이 ItemOnPropertyChanged에서 오류를 찾아 디버깅 :

filterResult = _filter(item); 

"_filter는"널 이었기 때문에. 당신이 그렇게 어떻게 알 수 "나는 뒤에 코드에서 정렬을 수행하는 데 사용됩니다." https://github.com/Microsoft/UWPCommunityToolkit/issues/1686