Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# Can';t访问telerik:RadComboBox中的排序属性_C#_Wpf_Xaml_Combobox_Telerik - Fatal编程技术网

C# Can';t访问telerik:RadComboBox中的排序属性

C# Can';t访问telerik:RadComboBox中的排序属性,c#,wpf,xaml,combobox,telerik,C#,Wpf,Xaml,Combobox,Telerik,我有一个Telerik组合框: <telerik:RadComboBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsReadOnly="True" SelectedIndex="0" x:Name="CbBoxUltra" SelectionChanged="CbBoxUltra_SelectionChanged" MinWidth="100"/> 我想对组合框中的项目进行排序(例如从a到z)。 所以我试着

我有一个Telerik组合框:

<telerik:RadComboBox  Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsReadOnly="True" SelectedIndex="0" x:Name="CbBoxUltra" SelectionChanged="CbBoxUltra_SelectionChanged" MinWidth="100"/>
我想对组合框中的项目进行排序(例如从a到z)。 所以我试着去做文件里的事:

但是在.xaml中,我无法访问属性“Sort”,就像我在“VerticalAlignment”中所做的那样,我也无法访问.xaml.cs中的属性:

CbBoxUltra.Items.Sort(); //It doesn't match anything here

我只能访问.SortDescription,但这不是我要搜索的…

从Telerik的文档中收集的信息来看,
排序属性仅适用于(服务器端),而不适用于

考虑到这一点,有两种最常见的方法

I.利用现有WPF实施

RadComboBox.Items
属性实际上是从
ItemsControl
继承的。它属于
ItemCollection
类型,它实现了
ICollectionView
,并支持通过
sortddescriptions
集合进行排序。因此,如果要按属性值排序,只需将适当的项添加到该集合:

CbBoxUltra.Items.SortDescriptions.Add(new SortDescription
{
    PropertyName = "XXX",
    Direction = ListSortDirection.Descending
});
CbBoxUltra.Items.SortDescriptions.Add(new SortDescription
{
    PropertyName = "YYY",
    Direction = ListSortDirection.Ascending
});
此代码将使项目首先按
XXX
属性按降序排序,然后按
YYY
属性按升序排序。但是,如果排序逻辑需要的不仅仅是引用项属性值,则可以添加单个排序描述,而不使用
PropertyName

CbBoxUltra.Items.SortDescriptions.Add(new SortDescription
{
    Direction = ListSortDirection.Descending
});
这将导致排序机制使用项目类型的默认比较器进行排序。为了应用自定义逻辑,请确保您的项实现接口。
字符串
的Ddefault比较器按词汇顺序排序

II。添加前对项目进行预排序

如果只添加一次项,这种方法会更容易一些。下面是代码摘录:

foreach (var ultra in line2.OrderByDescending(...))
{
    ...
}

请注意,如果您要多次添加项目(例如,在用户输入时),这将变得更加棘手,因为您必须在适当的索引处手动插入项目。

如何
CbBoxUltra.Sort()?同样,它与文档中的任何内容都不匹配,它是这样使用的属性
CbBoxUltra.Sort=radcomboxsort.Descending对于您的代码,我有:“名称'RadComboxSort'在当前上下文中不存在”;
foreach (var ultra in line2.OrderByDescending(...))
{
    ...
}