我正在使用Extended WPF Toolkit的(社区版)来显示具有DateTime列的记录。
<xcdg:DataGridControl
ItemsSource="{Binding ResponseInstructions, UpdateSourceTrigger=PropertyChanged}"
ReadOnly="True"
AutoCreateColumns="False"
>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Created" Title="Request made">
<xcdg:Column.CellContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding StringFormat=\{0:dd/MM/yy hh:mm\}}" />
</DataTemplate>
</xcdg:Column.CellContentTemplate>
</xcdg:Column>
<!-- SNIP: Some other columns here... -->
<xcdg:Column FieldName="Notes" Title="Notes" Width="*" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
我希望能够更改DateTime列的分组行为,使其按日期分组(即忽略时间),但也保留默认排序功能(即日期,然后是时间)。
如果不需要保留默认排序功能,我只需将列从DatetTime更改为Date。有没有办法让我的蛋糕吃到它?
答案 0 :(得分:2)
最终我发现所需的也可以在纯xaml中完成。
这是示例xaml
<xcdg:Column FieldName="Created"
Title="Request made">
<xcdg:Column.GroupDescription>
<xcdg:DataGridGroupDescription PropertyName="Created.Day"/>
</xcdg:Column.GroupDescription>
<xcdg:Column.CellContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding StringFormat=\{0:dd/MM/yy hh:mm\}}" />
</DataTemplate>
</xcdg:Column.CellContentTemplate>
</xcdg:Column>
结果
在上面的示例中,排序基于完整的日期和时间,其中分组在Created(DateTime)属性的Day属性上
以上示例基于某些假设,我无法看到您的方法,因为GroupByDate
中的GroupDescription="{StaticResource GroupByDate}"
资源未在问题中提及。
修改强>
这里要求的是一种改变组的大多数方面的方法,包括顶部面板和组头
<xcdg:DataGridControl ItemsSource="{Binding ResponseInstructions}"
ReadOnly="True"
AutoCreateColumns="False">
<xcdg:DataGridControl.Resources>
<Style TargetType="{x:Type xcdg:GroupByItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Title}"
Value="Created.Date">
<Setter Property="Content"
Value="Request made" />
</DataTrigger>
</Style.Triggers>
</Style>
<DataTemplate DataType="{x:Type xcdg:Group}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Value,StringFormat=dd/MM/yy}" />
<TextBlock Text=": " />
<TextBlock Text="{Binding Items.Count}" />
<TextBlock Text=" request(s)" />
</StackPanel>
</DataTemplate>
</xcdg:DataGridControl.Resources>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Created"
Title="Request made">
<xcdg:Column.GroupDescription>
<xcdg:DataGridGroupDescription PropertyName="Created.Date" />
</xcdg:Column.GroupDescription>
<xcdg:Column.CellContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding StringFormat=\{0:dd/MM/yy hh:mm\}}" />
</DataTemplate>
</xcdg:Column.CellContentTemplate>
</xcdg:Column>
<!-- SNIP: Some other columns here... -->
<xcdg:Column FieldName="Notes"
Title="Notes"
Width="*" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
结果
我为顶部面板引入了一种样式,为组头引入了数据模板。我在样式中使用了数据触发器来设置自定义标题,因为数据网格似乎有自己的机制来检索组标题。此外,我已经从日期到日期修改了组属性,因为日期不正确,因为它只是日期而不是日期。