我有一个包含21列的DataGrid,其中第一列包含日期,另外20列是货币值,即数字必须与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>