2012-04-11 3 views
2

내가 뒤에서 코드에서 CollectionViewSource에 바인딩 해요 목록보기가 변경 정렬 및 방향은 오름차순 또는 내림차순 중 하나입니다.내 CollectionViewSource가 픽업되지 않는 것은

XAML은 ItemSource에 대해 다음과 같습니다

ItemsSource="{Binding Rows}" 
코드는 뒤에 행에 관해서 다음과 같은있다

:

List<TableRow> rows; 

public List<TableRow> Rows 
{ 
    get { return rows; } 
    set 
    { 
     rows = value; 
     UpdateProperty("Rows"); 
    } 
} 

업데이트는 다음과 같다 :

public void Update() 
{ 
    ...generate a list of rows... 

    Rows = ...rows... 
} 

을 업데이트가 호출되고 목록보기가 업데이트되지만 수집시 이전에 정렬 집합이 손실되면 문제가 발생합니다. ionViewSource.

답변

4

"새 행"인 경우 이전 행의 설정이 모두 사라집니다. 새로운 행이 아니라면 행을 지우면 설정을 유지한다고 생각합니다.

그리고 Rows = 행을 업데이트하지 않으려합니다. 그런 다음 행을 지정하십시오.

NotifyPropertyChange("Rows"); 

는 그래서 UI는 새로운하려는 경우 다음 어쩌면

collectionView = CollectionViewSource.GetDefaultView(TableView.ItemsSource); 
collectionView.SortDescriptions.Clear(); 
collectionView.SortDescriptions.Add(new SortDescription(propertyName, direction)); 

private List<TableRow> rows = new List<TableRow>(); 

를 재 할당

을 업데이트 알고있는 유일한 장소 당신의 새로운 그것이

+0

불행히도, 행 = 행을 사용하는 것은 내가하고있는 작업에 대한 요구 사항입니다. – imekon

+1

@imekon 그리고 왜 행 = 행이 필요한 것입니까? – Paparazzi

0

요요 업데이트 후 CollectionView.Refresh()을 시도해보십시오.

이것이 도움이되지 않는다면 Rows 목록에 새 값을 지정하여 CollectionView의 원본을 변경했기 때문에 문제가 발생했다고 생각합니다.

코드는 가능하지만 새 목록을 지정하지 않으면 이전 페이지를 지우고 새 행을 삽입 할 수 있습니다.

if (Rows != null) 
    Rows.Clear(); 
    Rows.TrimExcess(); 
else 
    Rows = new List<TableRow>(); 
+0

새로 고침에는 아무런 영향이 없습니다. – imekon

1

대답은 같이 업데이트 후 정렬 설명을 다시 적용하는 것입니다

collectionView = CollectionViewSource.GetDefaultView(TableView.ItemsSource); 
collectionView.SortDescriptions.Clear(); 
collectionView.SortDescriptions.Add(new SortDescription(propertyName, direction)); 

그런 다음 정렬이 손실되지 않습니다. 컬렉션보기의 새로 고침이 도움이되지 않습니다.

+0

정확히 23 시간 전에 답변 한 내용입니다. 만약 당신이 새로운 일을하려고한다면, 다시 할당하십시오 ... – Paparazzi

+0

그건 사실 이예요. 새로 고침이나 더 간단한 일을 해주기를 바랬습니다. – imekon

2

그룹화, 정렬 및 필터링 작업 중 하나에 관련된 항목 속성 값이 으로 업데이트 된 경우 정렬/그룹화/필터링이 다시 수행되지 않습니다.

WPF 4.5에는 라이브 모양의 컬렉션 뷰를 형성하는 라이브 셰이핑이라는 기능이 도입되었습니다.

자세한 내용은 this article을 참조하십시오.

관련 문제