Silverlight DataGrid를 IList 파생 데이터 원본과 함께 사용하면 CanUserSortColumns/CanUserSort 속성이 false가 아니라고 가정하고 열을 클릭하여 정렬 할 수 있습니다.Datagrid는 일부 필드 (개체, 개체 하위 필드, 기본 형식)를 정렬 할 수 없습니다.
그러나 일부 가장자리는 정렬 할 수 없습니다. 값이 표시되지만 열을 클릭해도 효과가 없습니다.
첫 번째 엣지 경우는 매우 단순한 List<string>
인 것처럼 보이지만 값은 표시되지만 정렬은 허용되지 않습니다. 이것은 문자열이 IComparable을 함축하는 것처럼별로 의미가 없습니다.
두 번째 가장자리의 경우가 훨씬 더 복잡하므로 해결해야 할 수도 있습니다. 두 번째 경우는 객체 유형의 필드와 하위 필드를 포함합니다.
public class ContainerItem
{
public object ChildValue {get; set;}
// Other properties
}
childValue가의 값은 그리드에 표시 할 수 있으며, childValue가 할당 된 유형 속성이있는 경우 우리는 그들 (childValue가. 재산권)에 결합 할 수 있지만, 우리는 열을 정렬 할 수 없습니다.
정의 된 유형이 없다는 것이 명백한 사실입니다. 객체가 서로 다른 호환되지 않는 유형 인 경우에는 분명히 문제가 될 것입니다. 내 특정 상황에서 ChildValue 같이 열 바인딩 정의를 같이 동적으로 할당 된 함께 붙어 있어요.
난 분명히 할 일이 필요해 - 나는 ContainerItem 클래스 정의를 제어 할 수 있고 ChildValue의 속성에 대한 바인딩은 항상 OneWay (ContainerItem의 고정 속성 만 양방향 바인딩을 사용함)입니다.
아마도 SortMemberPath를 사용하여 ContainerItem의 일부 배열 속성에 바인딩 할 수 있습니다. 배열의 각 요소는 두 개의 ChildValue 속성에서 값을 가져올 수 있도록 열의 바인딩 정보로 채워진 ContainerItemComparer 개체입니다. , 비교하고, 속성이 알몸의 객체임을 DataGrid가 인식하지 않고 결과를 반환합니까?