2

我正在使用扩展 WPF 工具包的(社区版)来显示具有 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。有没有办法让我的蛋糕吃掉?

4

1 回答 1

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>

结果

结果

我为顶部面板引入了一种样式,并为组标题引入了数据模板。我在样式中使用数据触发器来设置自定义标题,因为数据网格似乎有自己的机制来检索组标题。我还修改了从 Day 到 Date 的 group 属性,因为 day 不正确,因为它只是日期而不是日期。

于 2014-08-20T13:27:41.567 回答