【问题标题】:WPF DataGrid Header Text Background FillWPF DataGrid 标题文本背景填充
【发布时间】:2020-09-26 06:05:53
【问题描述】:

我无法在 DataGrid 中填充标题背景,如下图所示。我尝试拉伸标题和摘要文本以填充标题空间等。摘要世界上方有一个白色背景(这适用于网格中的每个标题)。如何摆脱空白?

                    <DataGrid x:Name="DisplayGrid" Grid.Row="2" IsReadOnly="False" SelectionMode="Single"  SelectionUnit="Cell" CanUserAddRows="False" CanUserDeleteRows="False" CanUserSortColumns="False" ScrollViewer.VerticalScrollBarVisibility="Visible"
                      AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Top" >

                    <DataGrid.ColumnHeaderStyle>
                        <Style TargetType="DataGridColumnHeader">
                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                            <Setter Property="VerticalContentAlignment" Value="Stretch" />
                            <Setter Property="TextBlock.FontWeight" Value="Bold" />
                            <Setter Property="ContentTemplate">
                                <Setter.Value>
                                    <DataTemplate>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding Mode=OneWay}" ></TextBlock>
                                    </DataTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGrid.ColumnHeaderStyle>

和摘要栏:

                            <DataGridTemplateColumn x:Name="SummaryTextBox" Header="Summary" IsReadOnly="True" MinWidth="100" Width="*" MaxWidth="450">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock 
                                        Text="{Binding Summary}" 
                                        TextWrapping="Wrap"
                                        TextAlignment="Justify"
                                        VerticalAlignment="Stretch"
                                        />
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

编辑 1: 添加背景会从标题中删除网格线。之后就不好看了(也使用不同的背景颜色)。

<Setter Property="Background" Value="Gray"></Setter>

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:
            <DataGrid.ColumnHeaderStyle>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                    <Setter Property="VerticalContentAlignment" Value="Stretch" />
                    <Setter Property="TextBlock.FontWeight" Value="Bold" />
                    <Setter Property="Background" Value="Gray"></Setter>
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <TextBlock TextWrapping="Wrap" Text="{Binding Mode=OneWay}" ></TextBlock>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.ColumnHeaderStyle>
    

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
    【解决方案2】:

    是的,

    白色是因为默认的列标题样式,所以你必须在你的样式中明确设置背景。

    <Setter Property="Background" Value="LightGray"/>
    

    如果您想拥有与数据部分不同的外观,您可以使用渐变色或阴影效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 2014-04-06
      相关资源
      最近更新 更多