최근에 WPF ListView
컨트롤이 해당 항목을 정렬하는 기능을 제한하는 것으로 보이는 문제를 발견했습니다. 특히 SortDescription
에 중첩 된 속성 (속성 속성)을 인식시키려는 데 많은 어려움을 겪고 있습니다.WPF ListView - 중첩 된 속성으로 정렬
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
ListSortDirection.Ascending));
을 그리고 실제로 나를 위해 잘 작동합니다 :
propreties에 의해 솔직 분류를 들어, 다음 줄은 작업을 수행해야합니다. 그러나 ListView
에 대한 ItemSource
은 (강하게 입력 된) DataTable
이므로 일부 열은 행의 중첩 된 속성에 바인딩됩니다 (즉, Row.OtherTableRow.SubProperty
바인딩 경로 스타일). ADO.NET DataSet이 계층 적 데이터베이스에서 작동하는 방식입니다. 내가하고 싶은 무엇
이 같은 것입니다 :
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
ListSortDirection.Ascending));
그러나 불행하게도 그 라인은 ArgumentException
발생시킵니다.
행 '라는 이름의 속성이 없습니다'주문 '유형 [ID를 ] ', 그래서 데이터 수집을 정렬 할 수 없습니다.
이상하게도 중첩 된 속성에 바인딩하는 데 문제가 없습니다. 실제로, 필드는 ListView
에서 완벽하게 잘 표시됩니다 ... PropertyGroupDescription
을 listView.GroupDescriptions
에 추가해도 중첩 된 속성에 문제가 발생하지 않습니다. 이는 단지 SortDescriptions
입니다!
WPF/ListView
컨트롤의 제한 사항이 아닙니까? 프레임 워크의 일부로 지원을받을 수있는 방법이 있습니까? 아니면 내가 운이 좋지 않을까요? 불행하게도이 불일치가 불가피한 경우 중첩 된 속성의 시나리오에 대한 해킹 또는 해결 방법을 제안 할 수 있다면 크게 감사하겠습니다. 나는 이미 몇 가지 아이디어를 시도했지만, 모두 최소한의 성공 만이 있습니다.
참고 : ORM이 내 문제를 잘 해결할 수 있음을 알고 있지만, 현재 작업중인 현재 프로젝트에서는 이것이 가능하지 않습니다. 단순한 ADO.NET DataSets가해야 할 일입니다.
건배. 나는 다른 고급 시나리오를 잘 다루는 경우에 그 책을 살펴볼 수 있습니다. :) – Noldorin