다양한 속성을 가진 Car 클래스가 있습니다.CollectionViewSource 동적으로 정렬하기
나는 단순함을 위해 객체 데이터 공급자를 통해 XAML에서 사용할 수있는 일련의 자동차 항목을 정의한 정적 Cars 컬렉션 클래스를 사용합니다.
XAML에 컬렉션 뷰 소스가 정의되어있어 ObjectDataProvider에 성공적으로 바인딩됩니다.
나는 컬렉션을 보여주는 목록 상자가 있습니다.
모든 표준 자습서에서 권장하는대로 CVS에 정렬을 추가했으며 모든 것이 잘 작동합니다.
내 질문 : 다른 필드에서 정렬하려고한다고 가정합니다. 분명히 고객에게 코드를 제공하지 않아도이를 변경할 수있는 방법이 있습니다. 그래서 나는 콤보 박스를 구현했다.
다음 코드를 사용하여 Car 클래스의 속성 목록을 콤보 상자에로드하지만 속성 목록 만 가져 오는 것은 아닙니다. 나는 또한 그들의 데이터 유형을 얻는다. 나는 이것을 원하지 않는다. (콤보 상자에 표시되는 것)
Car xyz=new Car(); //Make a temp Car Object so we can get a list of properties.
//Assign this to the combobox for listing.
cbxSortPrimary.ItemsSource = xyz.GetType().GetProperties();
결과 :
System.String Model
Double Price
Int32 NoOfPrevOwners
DataType PropertyName
ect... ect...
ect... ect...
ect... ect...
내 목표는 콤보 상자에 속성 이름에로드하는 것입니다. ComboBox.SelectedItem.ToString은() 속성의 이름에 정렬 할 포함 할 경우
myListBox.Items.SortDescriptions.Add(new SortDescription(ComboBox.SelectedItem.ToString(), ListSortDirection.Descending));
: 다음과 같은 코드의 라인을 구축하기 위해 선택한 속성 이름을 사용합니다.
그래서 어떻게 데이터 이름을 속성 이름 앞에 없앨 수 있습니까? 나는 모든 종류의 지저분한로드를 다른 목록에 넣을 수 있다는 것을 알고있다. 그리고 나서 오른쪽에서 첫 번째 공백을 찾고 그 전에 모든 것을 다듬는 문자열 핸들링을 다룬다.. 하지만 반드시 쉬운 방법이 있어야합니다.
효과적으로 내가 뭘 하려는지 사용자가 Car 클래스의 다른 속성을 정렬하도록하는 것입니다. (그래서 속성을 어딘가에로드하고 사용자가 선택할 수 있도록합니다 (따라서 콤보 상자). 내가 궁금해하는 점은 모든 문자열 조작 코드없이 속성 목록을 얻는 쉬운 방법이 있어야하며 매우 기본적인 요구 사항처럼 보이므로 많이 반영하지 않아야한다는 것입니다.
미리 도움을 청하십시오!
덕분에 매우 솔루션에 대한 많은 및 빠른 응답. 잘 했어. –