2012-02-22 3 views
0

Wpf 바인딩은 잘 아는 사람들에게는 재미 있고 초보자에게는 악몽입니다. 주석 처리 된 CollectionView에 콤보 상자를 바인딩하면 컨트롤은 필터로 제외 된 요소를 포함하여 모든 요소를 ​​표시합니다. 동일한 콤보 박스를 ICollectionView에 바인딩하면 필터링 된 요소 만 표시되고 확인됩니다. 여기 콤보 상자를 CollectionView에 바인딩하면 필터링 된 요소가 표시됩니다. 왜?

//public CollectionView MyCapitoliList { get; private set; } 
public ICollectionView MyCapitoliList { get; private set; } 

내가 CollectionView를 만들 때 사용하는 코드와 ICollectionView에

MyCapitoliList = CollectionViewSource.GetDefaultView(listaCapitoli); 
//MyCapitoliList = new CollectionView(listaCapitoli); 


MyCapitoliList.Filter = new Predicate<object>(isCapitoloMaster); 

I는 C# 코드의 모든 요소를 ​​인쇄 할 때 CollectionView 체크하고 만 필터링 요소를 포함하므로 CollectionView 괜찮 . 필터링되지 않은 요소를 콤보 상자에 바인딩하면 왜 모든 요소를 ​​가져 옵니까?

감사 필리포

+0

여기에 코드를 모두 표시하지 않았습니다. 당신이 사용하고있는 코드를 보여줄 수 있을까요? 그리고 작동해야한다고 생각할 수 있습니다.리스트에 묶여있는 콜렉션과 주석 처리 된 코드는 생략하십시오. – ColinE

답변

1

MSDN 약 CollectionView 클래스 ...

당신은 당신의 코드에서이 클래스의 객체를 만들 수 없습니다해야한다고 말했습니다. IEnumerable 만 구현하는 컬렉션에 대해 컬렉션 뷰를 만들려면 CollectionViewSource 개체를 만들고 컬렉션을 Source 속성에 추가하고 View 속성에서 컬렉션 뷰를 가져옵니다.

그것은 더 추가 ... WPF 응용 프로그램에서

, 모든 컬렉션은 관련된 기본 수집 볼 수 있습니다. 모음으로 직접 작업하는 대신 바인딩 엔진은 연결된 보기를 통해 항상 컬렉션에 액세스합니다. 기본보기를 가져 오려면 CollectionViewSource.GetDefaultView 메서드를 사용하십시오.

+0

좋습니다.하지만 CollectionViews는 무엇을 위해 사용 되나요? – Filippo