2011-08-04 8 views
7

TreeView에 노드를 수동으로 채우고 정렬하려고합니다. 사용자 상호 작용을 통해 TreeViewItem의 헤더가 변경 될 수 있으며 목록의 해당 지점으로 이동해야합니다.TreeView 목록을 유지하는 WPF가 정렬되었습니다.

나는 수많은 TreeViewItem의 작성 및 부모 노드에 추가 foreach는 반복. 그것은 정렬되어야하는 모든 아이들입니다. 다음과 같이 SortDescription을 추가합니다.

tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending)); 

이는 intial 목록을 정렬,하지만 난 트리보기 항목 중 하나의 헤더를 변경할 경우이 항목을 다시 정렬하지 않습니다 표시된 후. 머리글 텍스트는 변경되지만 목록의 항목 위치는 동일하게 유지됩니다.

누락 된 것이 있습니까?

나는 목록을 지우고 그것을 다시 채우려 고 노력했다. 그러나 그것은 내가 선택한 항목이 변경되었을 때와 많은 수의 논리를 가지고 있기 때문에 내 프로그램에서 일부 문제를 일으킨다. 목록을 지울 때이 논리를 모두 호출 한 다음 목록을 다시 작성한 후에 프로그래밍 방식으로 항목을 다시 선택할 때 다시 지워집니다. 위의 코드는 다음 작동하지 않을 경우

답변

12

항목의 컬렉션 ....

헤더 편집 한 후 다음 코드를하려고 그 속성 변경에 따라 갱신 할 수

tviParent.Items.Refresh(); 

이있을 것이다 각 수정 후 아래 코드 ...

tviParent.Items.SortDescriptions.Clear() 
    tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending)); 
+0

두 번째 옵션은 효과가 있습니다. – WPFNewbie

+0

기꺼이 도와 드리겠습니다. –

+0

두 번째 옵션은 CheckBox가 포함 된 TreeView에서 작동했습니다. 감사! –

관련 문제