【问题标题】:Text alignment in WPD DataGridWPF DataGrid 中的文本对齐方式
【发布时间】:2020-02-22 12:10:53
【问题描述】:

我的 WPF 窗口中有一个 DataGrid,我希望将文本与单元格中的垂直中心对齐 - 不行。这是我设置数据网格单元格样式的样式属性,但显然 VerticalAlignment 不起作用

<Window.Resources>
    <Style TargetType="DataGridCell">
        <Setter Property="TextBlock.TextAlignment" Value="Center"/>
        <Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
        <Setter Property="TextBlock.FontSize" Value="14"/>
        <Setter Property="Height" Value="50"/>
    </Style>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</Window.Resources>

这是我的数据网格

 <DataGrid x:Name="WOgrid" HorizontalAlignment="Center" Height="246" Margin="10,23.2,0,0" VerticalAlignment="Top" Width="119" IsReadOnly="True" 
              AutoGenerateColumns="False" Grid.Row="1" HeadersVisibility="Column" CanUserResizeRows="False" SelectionMode="Single">

        <DataGrid.Columns>

            <DataGridTextColumn Binding="{Binding WOnum}" Header="WO Number" Width="*"/>

            <DataGridTextColumn Visibility="Hidden" Binding="{Binding WOstatus}" Header="Status" Width="0"/>

        </DataGrid.Columns>
        <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding WOstatus}" Value="0">
                        <Setter Property="Background" Value="Orange"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding WOstatus}" Value="1">
                        <Setter Property="Background" Value="LightYellow"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding WOstatus}" Value="2">
                        <Setter Property="Background" Value="YellowGreen"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding WOstatus}" Value="3">
                        <Setter Property="Background" Value="GreenYellow"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding WOstatus}" Value="4">
                        <Setter Property="Background" Value="Red"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.RowStyle>

    </DataGrid>

我尝试了这个建议,似乎当 Horizo​​ntialAlignment 单独存在时它可以工作,但如果它与 VerticalAlignment 一起存在 - 不。

【问题讨论】:

标签: wpf datagrid


【解决方案1】:

您需要编辑 DataGridCell 模板:

<Style TargetType="DataGridCell">
    <Setter Property="TextBlock.FontSize" Value="14"/>
    <Setter Property="Height" Value="50"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Border Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2016-06-08
    • 2012-05-02
    • 2011-01-28
    相关资源
    最近更新 更多