2016-10-24 4 views
1

내 WPF 응용 프로그램의 경우 컬렉션에서 선택, 필터링, 정렬 및 그룹화를 사용하려면 CollectionViewSource가 필요합니다. 그러나 CollectionViewSource는 IList와 같은 형식 안전 컬렉션이 아니며 View.CurrentItem 속성은 예를 들어 개체입니다. 항목을 사용하려면 항목을 캐스팅해야합니다.Generic과 다른 CollectionViewSource가 있습니까?

Generic을 지원하는 CollectionViewSource 대안이 있습니까? 혹시 CollectionViewSource가 제네릭이 아닌 이유를 아는 사람이 있습니까?

============================= 나는 표준 CollectionViewSource에 따라 일반적인 CollectionViewSource했다. XAML 외부에서 인스턴스화되는 컬렉션 클래스에 대한 더 나은 대안인지 여부에 대한 의견이 있으십니까? 아니면 더 나은 대안이 있습니까?

편집 1 : 일반 CollectionViewSource

+3

을 만일 안전 유형에 대해 잊고 및 XAML에서 제네릭의 사용이 복잡 후 당신의 CollectionViewSource의 소스로 ObservableCollection<T>을 갖는 제안 . – Clemens

+0

@Clemens는 실제로 ViewModel에서 CollectionViewSource를 인스턴스화하고 ViewModels과 Views 간의 데이터 교환으로 사용합니다. –

+0

물론, CollectionViewSource가 제네릭이 아닌 이유에 대해 질문했습니다. 그렇지 않으면 소프트웨어 라이브러리 또는 기타 오프 사이트 리소스를 요구하기 때문에 질문에 벗어난 것입니다. – Clemens

답변

0

의 일반적인되지는 유형 안전이 기본 수집하지 뷰에 있어야한다는 것입니다 이유를 추가합니다. 콤보 및 목록 컨트롤이 입력되지 않습니다 같은

CollectionViewSource는 데이터의 표시를 포맷 순수하지 아니하며가

그들에게 주어진 어떤 작업을해야하기 때문에, CollectionViewSource은 정확히 같은 이유로

예를 들어 학생 컬렉션이있는 경우 콤보로 표시하고 싶지만 "NEW STUDENT"를 선택할 수 있기를 원하면 새로운 학생은 학생이 아니므로 학생 컬렉션에 추가 할 수는 없지만 완벽하게 유효한 콤보 아이템이기 때문에 기본 컬렉션은 타입 안전해야하며, 콤보에서 동일하게 적용하는 것은 제한적이며 보호하지 못합니다. 뷰의 측면에서 코드는 값이 정렬되어 있는지 여부를 신경 써서는 안됩니다. 인간의 것

일반적인 CollectionViewSource와 마찬가지로 기본 컬렉션이 이미 수행 중이므로 형식 안전성이 좋지 않은 경우 사용하는 방법에 따라 다릅니다.

난 그냥이 일반적으로 XAML에서 인스턴스화되기 때문에 제네릭하지 않을 수 있습니다 디스플레이

관련 문제