如何在WPF中以不同方式使列单元格居中

时间:2017-02-05 23:57:40

标签: c# wpf datagrid alignment

这是我的datagrid,其中包含7列,这是我的数据网格中的内容图片:

enter image description here

我申请了下一段代码:

<DataGrid Grid.Row="1" VerticalContentAlignment="Center"  IsReadOnly="True" AlternatingRowBackground="#E0E4E5" AlternationCount="2"  GridLinesVisibility="Horizontal" FontSize="16" RowHeight="35" SelectionUnit="FullRow" RowHeaderWidth="0" HorizontalGridLinesBrush="Gray" VerticalGridLinesBrush="#EBEBEB" CanUserAddRows="False" MinHeight="200" x:Name="dtgItems" Margin="15,0,4,10" AutoGenerateColumns="False" Background="Transparent" SelectionChanged="dtgItems_SelectionChanged"  ScrollViewer.CanContentScroll="False" EnableRowVirtualization ="False" >

            <DataGrid.Resources>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="Background" Value="#0091EA"/>
                    <Setter Property="Opacity" Value="1"/>
                    <Setter Property="Foreground" Value="White"/>
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                    <Setter Property="FontSize" Value="16"/>
                    <Setter Property="FontFamily" Value="Arial"/>
                    <Setter Property="Height" Value="40"/>
                </Style>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#0091EA"/>
            </DataGrid.Resources>
            <DataGrid.CellStyle>
                <StaticResource ResourceKey="DataGridCentering"/>
            </DataGrid.CellStyle>
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding OrdinalNumber}"   Header="OrdinalNumber"   Foreground="Black" FontSize="15" FontFamily="Verdana" Width="10*" />
                <DataGridTextColumn Binding="{Binding ArticleCode}"   Header="Code"   Foreground="Black" FontSize="15" FontFamily="Verdana" Width="10*"  />
                <DataGridTextColumn Binding="{Binding ArticleTitle}"     Header="Title"   Foreground="Black" FontSize="15" FontFamily="Verdana" Width="40*"   />
                <DataGridTextColumn Binding="{Binding Quantity, StringFormat=N2}"       Header="Qty"   Foreground="Black"      FontSize="15" FontFamily="Verdana" Width="10*" />
                <DataGridTextColumn Binding="{Binding Price, StringFormat=N2}"   Header="Price"      Foreground="Black"     FontSize="15" FontFamily="Verdana" Width="10*" />
                <DataGridTextColumn Binding="{Binding Discount, StringFormat=N2}"    Header="Discount"  Foreground="Black"           FontSize="15" FontFamily="Verdana"  Width="10*"/>
                <DataGridTextColumn Binding="{Binding TotalAmount, StringFormat=N2}"    Header="Total"  Foreground="Black"           FontSize="15" FontFamily="Verdana"  Width="10*"/>
            </DataGrid.Columns>
        </DataGrid>

因为可以注意到我申请了

VerticalContentAlignment="Center"  on my `DataGrid` so all of my content is alligned center, but I would like to align `VerticalContentAlignment="Left"` to some of my cells/column, for example I would like to align Title to Left..

那么如何在不同的细胞/柱上应用不同的比对?

谢谢你们, 干杯

P.S我试过这个:

<DataGrid.Resources>

    <Style x:Key="LeftAlignCell" TargetType="DataGridCell">
        <Setter Property="VerticalContentAlignment" Value="Left"/>
    </Style>

<DataGrid.Resources>

ElementStyle="{StaticResource  LeftAlignCell}"

我将ElementStyle应用于我的DataGridTextColumn

但我收到以下错误:未找到请求的值。所以我猜这不是这样的..

1 个答案:

答案 0 :(得分:1)

你可能想要

    <Setter Property="HorizontalContentAlignment" Value="Left" />

因为它是水平对齐,而不是您正在谈论的垂直对齐