我有一辆有各种属性的汽车。
我有一个静态Cars集合类,为了简单起见,我定义了一组可以通过对象数据提供程序在XAML中使用的car项。
我在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类的另一个属性进行排序(因此,我需要在某个地方加载这些属性,并使它们可供用户选择,因此可以选择combobox)。我要问的是,必须有一种简单的方法来获得属性列表,而不必使用所有的字符串操作代码,并且希望没有太多的反射(除非我已经在不知情的情况下使用它),因为这似乎是一个非常基本的要求。
提前感谢您的帮助!
发布于 2012-01-01 05:13:52
一点也不乱:
var properties = new List<string>();
foreach (var info in typeof(Car).GetProperties())
{
properties.Add(info.Name);
}
cbxSortPrimary.ItemsSource = properties;https://stackoverflow.com/questions/8691786
复制相似问题