在DataGrid WPF中的某些条件之后添加分隔符

时间:2015-01-18 20:56:56

标签: c# wpf

我正在创建一个聊天窗口,当新的日期出现在作为datagrid的项目源绑定的列表的特定列中时,我想添加一个水平分隔符。有可能吗?。如果是这样的话? 任何帮助将不胜感激。

这是我想要做的:

enter image description here

1 个答案:

答案 0 :(得分:1)

刚检查过,是的,你可以选择分组:

a)向表示消息的对象添加新属性。此属性将返回一个字符串值,具体取决于日期(类似DayOfWeek.ToString();

b)将您的收藏分组为此新属性(使用<CollectionViewSource>

c)为一个组设置一个样式,大致是这样的(你需要添加一个画布或带有一条线的东西,并且可能将DockPanel的宽度绑定到它的父宽度):

  <DataGrid.GroupStyle>
            <GroupStyle>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Margin" Value="0,0,0,5"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                    <StackPanel>
                                        <DockPanel LastChildFill="True">
                                            <TextBlock Text="{Binding Path=Name}" DockPanel.Dock="Right"/>
                                            <!-- here comes the line -->
                                        </DockPanel>
                                        <ListBox>
                                            <ListBox.Items>
                                                <ItemsPresenter />
                                            </ListBox.Items>
                                        </ListBox>
                                    </StackPanel>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>              
        </DataGrid.GroupStyle>

P.S。如果您想使用相同的模式对超过一周的邮件进行分组,那么它当然不会起作用。在这种情况下,您可以尝试按两个属性进行分组。我会把所有东西都放在“旧”中。