我想在 DataGrid 中制作数据记录的 VerticalAlignment=Center
。默认情况下,数据记录的VerticalAlignment=Top
,看起来很丑。你能给我这个风格吗?
我在 App.xaml 文件中定义我的风格。以下是我目前的DataGrid风格:
<Style x:Key="DataGridView" TargetType="DataGrid">
<Setter Property="AlternatingRowBackground" Value="AliceBlue"></Setter>
<Setter Property="AlternationCount" Value="1"></Setter>
<Setter Property="AutoGenerateColumns" Value="False"></Setter>
<Setter Property="GridLinesVisibility" Value="Horizontal"></Setter>
<Setter Property="VerticalGridLinesBrush" Value="DarkGray"></Setter>
<Setter Property="HorizontalGridLinesBrush" Value="DarkGray"></Setter>
<Setter Property="RowHeight" Value="32"></Setter>
</Style>
最佳答案
尝试在 DataGrid
上设置 VerticalContentAlignment="Center"
:
<DataGrid VerticalContentAlignment="Center">
...
</DataGrid>
或者你可以为你的风格添加一个setter:
<Setter Property="VerticalContentAlignment" Value="Center"/>
当应用于 ItemsControl
s 时,此属性通常会修改每个单独项容器的对齐方式。在您的情况下,这应该使所有行的内容都居中对齐。
更新
好像 WPF 内置的 DataGrid
不遵守规则。
解决方案取决于您使用的列的类型。
对于 DataGridTemplateColumn
使用 CellTemplate
,如下所示:
<DataTemplate>
<!--Substitute the TextBlock by the actual cell content, but don't drop VerticalAlignment-->
<TextBlock VerticalAlignment="Center" Text="{Binding Text}"/>
</DataTemplate>
对于DataGridTextColumn
,设置ElementStyle
:
<Style>
<Setter Property="FrameworkElement.VerticalAlignment" Value="Center"/>
</Style>
我在 DataGridTextColumn
上试过这个,但该属性来自其父 DataGridBoundColumn
,所以应该适用于 DataGridCheckBoxColumn
和 DataGridHyperlinkColumn
也是。
更新 2
顺便说一句,there's another solution .
关于wpf - 如何在 WPF DataGrid 中垂直居中行的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8320661/