Для этого потребуется несколько шагов. Сначала нам нужно отключить GridLines в DataGrid, чтобы мы могли получить «Gap Cells». Вместо этого мы оставим GridLines в DataGridCells. Мы также должны указать GridLinesBrush. Мы не можем создать стиль DataGridGapColumn для DataGridColumn, так как он не выводится из FrameworkElement, поэтому нам придется соглашаться на GapCellStyle и GapHeaderStyle. Тогда мы можем создать "DataGridGapColumn" как этот
<DataGridTextColumn Width="100"
CellStyle="{StaticResource DataGridGapCell}"
HeaderStyle="{StaticResource DataGridGapHeader}"/>
Пример с некоторыми Колонны и Gap колонн
<DataGrid x:Name="dataGrid"
GridLinesVisibility="None"
HorizontalGridLinesBrush="Black"
...>
<DataGrid.Resources>
<!-- Regular Cell Style -->
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0,0,1,1"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap Cell Style -->
<Style x:Key="DataGridGapCell" TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
<Setter Property="BorderThickness" Value="0,0,1,0"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap ColumnHeader Style -->
<Style x:Key="DataGridGapHeader" TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding Header1}"/>
<DataGridTextColumn Width="100" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 2" Binding="{Binding Header2}"/>
<DataGridTextColumn Header="Header 3" Binding="{Binding Header3}"/>
<DataGridTextColumn Width="50" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 4" Binding="{Binding Header4}"/>
<DataGridTextColumn Header="Header 5" Binding="{Binding Header5}"/>
</DataGrid.Columns>
</DataGrid>
Update
Вы можете поместить Стили в ResourceDictionary или в Window.Resouces. Пример
<Window.Resources>
<Style x:Key="DataGridGapStyle" TargetType="DataGrid">
<Setter Property="GridLinesVisibility" Value="None"/>
<Setter Property="HorizontalGridLinesBrush" Value="Black"/>
</Style>
<!-- Regular Cell Style -->
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="1,0,1,1"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap Cell Style -->
<Style x:Key="DataGridGapCell" TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
<Setter Property="BorderThickness" Value="0,0,0,0"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap ColumnHeader Style -->
<Style x:Key="DataGridGapHeader" TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
</Style>
</Window.Resources>
<Grid>
<DataGrid x:Name="dataGrid"
Style="{StaticResource DataGridGapStyle}"
AutoGenerateColumns="False"
ItemsSource="{Binding MyCollection}">
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding Header1}"/>
<DataGridTextColumn Width="100" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 2" Binding="{Binding Header2}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
Я думаю, что изображение, которое показывает, что вы просите поможет – Erez 2010-12-15 20:51:25