【问题标题】:Remove Border of WPF DataGrid Header column删除 WPF DataGrid Header 列的边框
【发布时间】:2013-01-22 06:10:13
【问题描述】:

我的要求是我的 WPF DataGrid 行应该有边框,但 datagrid 标题列不应该有任何边框。

如果我将 DataGrid 放在 Border 元素中,那么整个网格,包括标题列,都会获得边框。

我已经设置了 GridLinesVisibility="Horizo​​ntal"。

有没有办法只为网格行设置边框?

谢谢!

编辑

这是我正在使用的 xaml 代码..

<Style x:Key="DataGridColumnHeaderHiddenStyle" TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Height" Value="15" />            
            <Setter Property="BorderBrush" Value="Transparent"/>            
        </Style>

<StackPanel>
            <ScrollViewer MaxHeight="175" VerticalScrollBarVisibility="Auto">
                <DataGrid  ItemsSource="{Binding SelectedItemsCollectionView}" 
                      CellStyle="{StaticResource CellStyle}" GridLinesVisibility="Horizontal"  HorizontalGridLinesBrush="{StaticResource GridBorderBrush}" ClipToBounds="True" AllowDrop="True" 
                              ScrollViewer.CanContentScroll="True" 
                              ScrollViewer.VerticalScrollBarVisibility="Auto"
                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"

                           x:Name="selectedItemsGrid">


                    <DataGrid.ItemContainerStyle>
                        <Style TargetType="{x:Type DataGridRow}">
                            <Setter Property="AllowDrop" Value="True" />
                        </Style>
                    </DataGrid.ItemContainerStyle>
                    <DataGrid.Columns>
                        <DataGridTextColumn Binding="{Binding Path=Name}">
                            <DataGridTextColumn.ElementStyle>
                                <Style TargetType="TextBlock">
                                    <Setter Property="TextAlignment" Value="Center" />
                                </Style>
                            </DataGridTextColumn.ElementStyle>
                        </DataGridTextColumn>
                    </DataGrid.Columns>
                    <DataGrid.Style>
                        <Style TargetType="DataGrid">
                            <Setter Property="HeadersVisibility" Value="Column" />
                            <Setter Property="ColumnHeaderStyle" Value="{StaticResource DataGridColumnHeaderHiddenStyle}" />
                        </Style>
                    </DataGrid.Style>
                </DataGrid>
            </ScrollViewer>
        </StackPanel>

【问题讨论】:

    标签: wpf wpfdatagrid datagridheaderborder


    【解决方案1】:

    您可以为DataGridColumnHeader 设置样式并将SeparatorBrush 设置为透明。这似乎也删除了列分隔符:

    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="SeparatorBrush" Value="Transparent" />
    </Style>
    

    【讨论】:

    • 我试过这个。但它不适合我。网格仍然在列标题行周围显示边框。
    • 有什么变化吗?标题分隔符是否仍然可见?请发布一些代码,因为它对我有用。
    • 是的.. 列标题分隔符现在不可见。但是网格标题行周围的边框仍然可见。我已经发布了 xaml 代码。
    • 你看到的那个边框是整个 Datagrid 的一部分。如果要为其排除列,则必须重新模板化数据网格。你有默认的 WPF 控件模板here
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2013-08-15
    • 2019-03-14
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多