我想根据工作日对某些项目进行分组和排序。这一周从星期一开始,因此组标题中的第一项应该是星期一,然后是星期二,依此类推。
BusData.Weekday是一个字符串,其值为WeekDay =“Monday”。
下面的代码根据工作日对项目进行分组,但按字母顺序对它们进行排序,因此星期五是组标题中的第一项。
GenericGroupDescriptor<BusData, string> group = new GenericGroupDescriptor<BusData, string>();
group.SortMode = ListSortMode.Ascending;
group.KeySelector = (key) =>
{
return key.WeekDay;
};
GroupDescriptors.Add(group);
我应该改变什么才能获得理想的结果?
我也可以像下面代码的第二个文本框中的文本一样绑定组头中的其他项吗?
<telerikDataControls:RadJumpList.GroupHeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="12,0,12,0">
<TextBlock Text="{Binding}" Margin="12,0,12,0" FontSize="30" FontFamily="{StaticResource PhoneFontFamilyNormal}" />
<TextBlock Margin="20,0,0,0" Text="{Binding Time}" />
</StackPanel>
</DataTemplate>
</telerikDataControls:RadJumpList.GroupHeaderTemplate>
答案 0 :(得分:1)
RadJumpList也支持SortDescriptors。
只需将SortWeight添加到BusData类
即可class BusData
{
public int SortWeight
{
get
{
switch(this.WeekDay)
{
case "Monday": return 0;
case "Tuesday": return 1;
// ... add more days here
}
return 7;
}
}
}
然后创建并添加排序描述符
var sorter = new GenericSortDescriptor<BusData, int>(
b => b.SortWeight) { SortMode = ListSortMode.Ascending };
SortDescriptors.Add(sorter);
而不是绑定到属性,我更喜欢在xaml
中执行<telerikDataControls:RadJumpList.GroupDescriptors>
<data:PropertyGroupDescriptor PropertyName="WeekDay" SortMode="None" />
</telerikDataControls:RadJumpList.GroupDescriptors>
<telerikDataControls:RadJumpList.SortDescriptors>
<data:PropertyGroupDescriptor PropertyName="SortWeight" SortMode="Ascending" />
</telerikDataControls:RadJumpList.SortDescriptors>
要记住的真正重要事情是将组描述符的SortMode
设置为None
,因为如果你没有设置它,它将被设置为升序,这将覆盖排序描述符行为。