누군가이 문제에 대한 지침을 제공 할 수 있습니까?WPF DataGrid 정렬 - 데이터가 시각적으로 정렬됩니다. 기본 데이터가 정렬되지 않았습니다.
DataTable에 바인딩 된 DataGrid가 있습니다.
관련 XAML & 코드 :
<DataGrid Name="dataGrid1" IsReadOnly="True" ItemsSource="{Binding}"
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Path" Binding="{Binding Path=Path}" />
</DataGrid.Columns>
dataGrid1.DataContext = gridData.dt; // this is a DataTable with 3 columns.
제 3 회 DT 열이 그리드에 표시되지 않습니다. 이드로 사용됩니다.
데이터 테이블이 첫 번째 열에 정렬되고 내용이 표시됩니다. 사용자는 이름 또는 경로 열/제목 중 하나를 클릭하여 정렬 할 수 있으며 시각적으로 정렬/표시는 잘됩니다. 문제는 특정 행을 선택하여 표의 데이터를 검사 할 때 DataTable의 데이터가 정렬되지 않은 상태로 남아있는 경우입니다.
내 질문에, 사용자가 열 중 하나를 정렬 할 때 그리드의 기본 데이터를 업데이트하는 가장 좋은 방법은 무엇입니까? 이것은 내가 관찰 한 내용입니다
(이 적절한 열을 DataTable의 정렬 필요) :
- 이 DataGridColumnHeader에 Click 이벤트 처리기를 추가하면 이벤트가 발생한다. (보낸 사람의) columnHeader.SortDirection 값이 목표 값이 아닌 CURRENT 값이라는 것을 확인했습니다.
즉 내림차순으로>가 오름차순 오름차순 -> 상승 하강 - 널 (null) : 주어진 열 정렬 순서는이 단계를 통과라고하는 것이 정확 현재 상태를 알면 다음 상태를 결정할 수 있습니다.
- DataGridColumnHeader의 SortDirection 속성에 오름차순/내림차순/null을 찾는 트리거를 배치 할 수 있지만 그 다음은 무엇입니까? 이 코드를 실행할 수 있습니까? 그렇다면 코드 조각을 보여줄 수 있습니까?
나는 비슷한 포스트를 통과하고 다음을 수행하는 것을 시도했다 :
- 하나에 내 데이터 그리드를 결합하여 CollectionViewSource 실험. 실험으로 열 머리글 클릭 이벤트를 트랩하고 열에 정렬 순서를 지정했습니다. 이것은 작동하지 않았다. (구현이 잘못되었을 수 있습니다.)
XAML에 특정 DataGridTextColumn 항목에 SortedMemberPath = "xx"를 추가했습니다.
매우 도움을 주셨습니다.
작업은 DataGridColumnHeader Click 이벤트 다르지 않다. I.E. SortDirection은 BEFORE 값입니다. –
나는 정렬 방향이 위에서 지적한 패턴을 따르고 이에 따라 코딩되었다고 가정했다. 첫 번째 열 (이름)을 내 ID (세 번째 숨겨진 열)에 매핑하고 그에 따라 다시 정렬하는 사전을 추가했습니다. 어쩌면 최선의 방법은 아니지만 잘 작동합니다. –