如何将列标题置于数据网格XAML中心

时间:2017-11-09 22:19:45

标签: c# .net wpf xaml datagrid

我试图让我的datagrid看起来更像listview 我想把文字放在中心位置" name"
然后删除项目右侧的垂直黑条。 enter image description here

<Window.Resources>
    <Style x:Key="DGCHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Height" Value="30"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>

        <Setter Property="Background" Value="#303030" />
        <Setter Property="Foreground" Value="White"/>
    </Style>

    <Style x:Key="DGHeaderStyle" TargetType="{x:Type DataGrid}">
        <Setter Property="ColumnHeaderStyle" Value="{DynamicResource DGCHeaderStyle}"/>
    </Style>
</Window.Resources>
<Grid>
    <DataGrid Foreground="Black" HeadersVisibility="Column" Background="Transparent" BorderBrush="Black" RowBackground="Transparent" x:Name="dgItems" Margin="2,0,10,10" Style="{DynamicResource DGHeaderStyle}"/>
</Grid>

2 个答案:

答案 0 :(得分:0)

添加

<Setter Property="Width" Value="525"/>

<Style x:Key="DGCHeaderStyle"  TargetType="{x:Type DataGridColumnHeader}">

修正了它

答案 1 :(得分:0)

像你所做的那样硬编码值会起作用,但它会破坏WPF的一个主要功能,即控件和视图的可扩展性。

而不是硬编码的525&#39;值,在ColumnWidth上设置DataGrid属性本身会为您提供更好的设计灵活性:

<DataGrid ColumnWidth="*"/>

这样,无论您拥有多少列,或者窗口或DataGrid获得的宽度/范围有多宽,列都会占用DataGrid中的所有可用空间

在WPF术语中,*表示&#34;使用所有剩余空间&#34;在容器中。