XAML DataGrid列边框

时间:2017-01-15 13:36:25

标签: wpf xaml datagrid

我有一个包含21列的DataGrid,其中第一列包含日期,另外20列是货币值,即数字必须与2位十进制数字右对齐。逻辑上总是三列,三列和一列属于一起所以我想要实现的是网格线是不可见的,但每三个列应该在右侧有一个垂直边框。

任何提示如何实现?

2 个答案:

答案 0 :(得分:2)

在XAML标记中显式定义所有列,并为设置DataGridCell的BorderBrush和BorderThickness的每个第三列定义CellStyle。像这样:

<DataGrid GridLinesVisibility="None" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding First}" />
        <DataGridTextColumn Binding="{Binding Second}" />
        <DataGridTextColumn Binding="{Binding Third}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="BorderBrush" Value="Red" />
                    <Setter Property="BorderThickness" Value="0 0 1 0" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

答案 1 :(得分:0)

如果要保持默认样式(在我的情况下为 MaterialDesign 样式),请定义样式:

   <Style
            x:Key="MyDataGridCell"
            BasedOn="{StaticResource MaterialDesignDataGridCell}"
            TargetType="DataGridCell">
            <Setter Property="BorderBrush" Value="Silver" />
            <Setter Property="BorderThickness" Value="1" />
        </Style>

然后将样式应用到 DataGrid:

 <DataGrid  CellStyle="{StaticResource MyDataGridCell}"
        GridLinesVisibility="None"  >
                <DataGrid.Columns>
                    <DataGridTextColumn
                        x:Name="Column1"
                        MinWidth="120"
                        Binding="{Binding Status}"
                        CanUserResize="False" /></DataGrid>