我有一个具有各种属性的汽车类。
我有一个静态 Cars 集合类,为简单起见,我在其中定义了一堆汽车项目,我可以通过对象数据提供程序在 XAML 中提供这些项目。
我在 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...
我的目标是将属性名称加载到组合框中。然后使用选定的属性名称来构建一行代码,例如:
myListBox.Items.SortDescriptions.Add(new SortDescription(ComboBox.SelectedItem.ToString(), ListSortDirection.Descending));
ComboBox.SelectedItem.ToString() 将包含要排序的属性的名称。
那么如何去掉属性名前面的数据类型。我知道我可以将各种杂乱的加载到另一个列表中,然后进行一堆字符串处理,从右边开始寻找第一个空格并在此之前切掉所有内容。但肯定有更简单的方法。
实际上,我想要做的是让用户对 Car 类的不同属性进行排序(所以我需要在某处加载属性并使它们可供用户选择,因此是组合框)。我要问的是,必须有一种简单的方法来获取属性列表,而无需所有字符串操作代码,并且希望没有太多反射(除非我已经在不知道的情况下使用它),因为这似乎是一个非常基本的要求。
提前感谢您的帮助!