2010-03-02 2 views
1

WPF 사용자 지정 컨트롤의 코드 뒤에 CollectionViewSource을 사용해야합니까?사용자 지정 컨트롤의 WPF CollectionViewSource가 잘못 사용 되었습니까?

I'am은 .FilterCollectionViewSource.GetDefaultView(SOURCE)는 가 제어 의 모든 인스턴스는 동일한 뷰을 가질 수 있도록보기를 변경 설정 요구하기 때문이다.

사용자 지정 컨트롤의 코드 뒤에있는 CollectionViewSource의 사용을 피해야한다는 뜻이 아닙니까?

답변

1

원하는 동작에 따라 다릅니다. 예 : 화면에 상태 목록이 여러 개 있고 동시에 지역별로 모든 항목을 필터링하려면 원하는 동작이 될 수 있습니다. 같은 필터 기준에 바인딩 된 항목을 원하지 않는 경우 항상 다른보기 소스를 강제로 적용 할 수 있습니다.

ItemsSource -> CollectionView -> Bound Item 컨트롤의 상호 작용을 이해할 때까지는 CollectionViewSource 사용을 피하는 것이 좋을지도 모릅니다.하지만 지금까지해야 할 말은하지 않을 것입니다. 일반적으로 그것을 피하십시오.

양식의 두 목록에 서로 다른 필터링/정렬 요구 사항이있는 경우 서로 다른 원본 속성 (해당 속성이 단일 원본 원본의 똑같은 복제본 임에도 불구하고)에서 바인딩되어야한다고 말하는 것이 합리적 일 수 있다고 생각합니다. 그렇게하면 나중에 CollectionViewSource 레벨에서 필터링 및 저장을 적용 할 수 있지만 나중에 의도하지 않은 결과가 발생하지 않습니다.

+0

당신은 완전히 요점을 이해했습니다. 이것이 큰 질문입니다. MyControl 사용자가 이러한 소스가 동일한 복제물이지만 모든 컨트롤에 자체 DataSource가 있음을 허용한다면. DynamicSource에 Nx가되어야하는 사람 목록을 생각해 봅시다. 이것은 실제로 문제를 해결하지만 질문은 : 귀하의 의견으로 받아 들일 수 있습니까? –

+1

다른 사람들을 위해 동봉 된 컨트롤을 개발하고 있다면 그 복잡성을 숨기고 싶을 것입니다. 아마 당신 자신의 바인딩에서 커스텀'CollectionViewSource'에 바인드 할 것입니다. 코드 숨김 복잡성을 줄이기 위해 컨트롤의 리소스 섹션에 'CollectionViewSource'를 정의하고 모두 동일한 외부 소스에 바인딩 한 다음 개별 항목 컨트롤을 적절한 CollectionViewSource에 바인딩 할 수 있습니다. –