嗨我有一个问题,可能它很简单,我有一个带有样式化单元格和数据触发器的数据网格,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}" />
数据触发但没有运气。
答案 0 :(得分:1)
我不认为为DataGridCell设置VerticalAlignment / HorizontalAlignment是一个好主意,因为它会产生一些奇怪的效果。 VerticalContentAlignment / HorizontalContentAlignment听起来更好,但不幸的是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>