我正在对一些数据进行分组,PropertyGroupDescription 在大多数情况下都工作正常。但是,如果该属性是 DateTime 并且我不想将多个日期分组为一组(例如每组 30 天或其他),我将需要一个新的 GroupDescription。问题是我不知道这个类实际上是如何工作的以及我将如何设计这样一个类。
我希望能够继承 PropertyGroupDescription (而不是基本的抽象类),因为这也将基于一个属性,但在这里我根据一系列值而不是单个值 == 1 组进行分组。
有类似这样的指南甚至现成的课程吗?
有点晚了,但正如你自己所说IValueConverter
可以用于此 - 这是我曾经使用过的一个简单转换器,它将按友好的相对日期字符串进行分组:
public class RelativeDateValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var v = value as DateTime?;
if(v == null) {
return value;
}
return Convert(v.Value);
}
public static string Convert(DateTime v)
{
var d = v.Date;
var today = DateTime.Today;
var diff = today - d;
if(diff.Days == 0) {
return "Today";
}
if(diff.Days == 1) {
return "Yesterday";
}
if(diff.Days < 7) {
return d.DayOfWeek.ToString();
}
if(diff.Days < 14) {
return "Last week";
}
if(d.Year == today.Year && d.Month == today.Month) {
return "This month";
}
var lastMonth = today.AddMonths(-1);
if(d.Year == lastMonth.Year && d.Month == lastMonth.Month) {
return "Last month";
}
if(d.Year == today.Year) {
return "This year";
}
return d.Year.ToString(culture);
}
public static int Compare(DateTime a, DateTime b)
{
return Convert(a) == Convert(b) ? 0 : a.CompareTo(b);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后你可以像这样使用它:
view.GroupDescriptions.Add(
new PropertyGroupDescription("Property",
new RelativeDateValueConverter()));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)