Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CollectionViewSource动态排序_C#_Xaml_Data Binding_Collectionviewsource - Fatal编程技术网

C# CollectionViewSource动态排序

C# CollectionViewSource动态排序,c#,xaml,data-binding,collectionviewsource,C#,Xaml,Data Binding,Collectionviewsource,我有一个拥有各种属性的汽车类 我有一个静态Cars集合类,为了简单起见,我在其中定义了一组car项,可以通过对象数据提供程序在XAML中使用这些项 我在XAML中定义了一个集合视图源,它成功地绑定到了我的ObjectDataProvider 我有一个显示收藏的列表框 我按照所有标准教程中的建议,将排序添加到CVS中,效果良好 我的问题: 假设我想在另一个字段上排序。当然,有一种方法可以改变这一点,而不必向客户提供代码。所以我实现了一个组合框 我使用下面的代码将属性列表从Car类加载到组合框中,但

我有一个拥有各种属性的汽车类

我有一个静态Cars集合类,为了简单起见,我在其中定义了一组car项,可以通过对象数据提供程序在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();
结果(组合框中显示的内容):

我的目标是将属性名加载到组合框中。然后使用选定的属性名称生成一行代码,如:

myListBox.Items.SortDescriptions.Add(new SortDescription(ComboBox.SelectedItem.ToString(), ListSortDirection.Descending));
其中ComboBox.SelectedItem.ToString()将包含要排序的属性的名称

那么如何去掉属性名前面的数据类型呢。我知道我可以将各种各样的混乱加载到另一个列表中,然后进行一系列字符串处理,从右侧查找第一个空格,并在此之前切掉所有内容但肯定有更简单的方法。

实际上,我希望做的是让用户对Car类的不同属性进行排序(因此我需要在某个地方加载属性,并使它们可供用户选择,因此使用组合框)。我要问的是,必须有一种简单的方法来获取属性列表,而不需要所有的字符串操作代码,并且希望没有太多的反射(除非我已经在不知道的情况下使用了它),因为这似乎是一个非常基本的要求

提前感谢您的帮助

一点也不乱:

        var properties = new List<string>();

        foreach (var info in typeof(Car).GetProperties())
        {
            properties.Add(info.Name);
        }
        cbxSortPrimary.ItemsSource = properties;
var属性=新列表();
foreach(typeof(Car.GetProperties()中的变量信息)
{
添加(信息名称);
}
cbxSortPrimary.ItemsSource=属性;

非常感谢您提供的解决方案和快速响应。做得好。
        var properties = new List<string>();

        foreach (var info in typeof(Car).GetProperties())
        {
            properties.Add(info.Name);
        }
        cbxSortPrimary.ItemsSource = properties;