仅适用于一列的特殊网格线样式

2024-02-15

我如何在网格的一列上设置自定义网格线样式DataGrid http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.aspx?特别是,我希望一列有一条双线作为其左边框。

Example:

| Col1 | Col2 || Col3 (w/ Double Left Border) |

谢谢你,
Ben


这取决于您想要这条双线的位置。垂直网格线绘制在OnRender for DataGridCell水平网格线绘制在OnRender for DataGridCellsPresenter。边界为DataGridColumnHeader然而更复杂。这是一个绘制在RenderTheme中的方法DataGridHeaderBorder我不认为有一种直接的方法可以改变它的宽度而不重新模板化整个DataGridColumnHeader。此外,标题的边框厚度是单元格中单元格厚度的​​两倍DataGrid首先(1px vs 2px),因为标题在两侧绘制分隔符。

因此,要获得仅影响单元格的双线粗细,您可以添加特殊的DataGridCell您希望应用此样式的位置。这个单元格样式所做的就是用与网格线相同的颜色向左侧绘制一个 1 像素的边框。它看起来像这样

<DataGrid ...
          HorizontalGridLinesBrush="Black">
    <DataGrid.Resources>
        <Style x:Key="DoubleLeftBorderCell" TargetType="DataGridCell">
            <Setter Property="BorderThickness" Value="1,0,0,0"/>
            <Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Double left Border"
                            CellStyle="{StaticResource DoubleLeftBorderCell}"
                            Binding="{Binding TextProperty}"/>
    </DataGrid.Columns>
</DataGrid>

无需担心鼠标悬停效应或任何对细胞的影响。如果你做类似的事情DataGridColumnHeader但是,您将失去排序箭头、鼠标悬停效果、鼠标按下效果等。因此您必须为其创建整个模板

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅适用于一列的特殊网格线样式 的相关文章

随机推荐