具有DataGridCell宽度的WPF Fit Data网格单元格Content.Text

时间:2018-04-05 11:38:30

标签: c# wpf xaml

嗨我有一个问题,可能它很简单,我有一个带有样式化单元格和数据触发器的数据网格,xaml看起来像:

    <Style x:Key="CellStyle" TargetType="{x:Type DataGridCell}">
        <Setter Property="ToolTip" Value="Click to zoom it to hour view for selected day" />
        <Style.Triggers>

            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}" Value="X ">
                <Setter Property="Background" Value="#FF6666" />
                <Setter Property="VerticalAlignment" Value="Center" />
                <Setter Property="HorizontalAlignment" Value="Center" />
            </DataTrigger>

            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}" Value="X">
                <Setter Property="VerticalAlignment" Value="Center" />
                <Setter Property="HorizontalAlignment" Value="Center" />
            </DataTrigger>

        </Style.Triggers>
    </Style>

非常简单,当值为X时,它会执行它应该的内容,它会使文本居中并为其提供适当的背景。但这背景是一个问题。

我希望背景适合单元格宽度,因为现在单元格内容文本背景被着色为文本宽度,高度加边距但不填充整个单元格。 可以用一些简单的方法吗?

我尝试添加:

<Setter Property="Width" Value="{Binding ActualWidth, ElementName=parentElementName}" /> 

数据触发但没有运气。

1 个答案:

答案 0 :(得分:1)

我不认为为DataGridCell设置VerticalAlignment / Horizo​​ntalAlignment是一个好主意,因为它会产生一些奇怪的效果。 VerticalContentAlignment / Horizo​​ntalContentAlignment听起来更好,但不幸的是DataGridCell忽略它们。

DataGridCell内容可以通过元素样式(在本例中为TextBlock)更改对齐的每列的ElementStyle进行居中,例如:

<DataGrid RowHeight="40">
<DataGrid.Resources>
    <Style x:Key="txt" TargetType="TextBlock">
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="HorizontalAlignment" Value="Center" />
    </Style>
</DataGrid.Resources>
<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="#FF6666" />
    </Style>
</DataGrid.CellStyle>

<DataGrid.Columns>
    <DataGridTextColumn ElementStyle="{StaticResource txt}" 
                        Binding="{Binding Path=Name}" Header="Name" />
</DataGrid.Columns>
</DataGrid>
相关问题