我有一个来自WPF 4.0 RTM的常规DataGrid,我把数据库中的数据放在那里。为了使DataGrid
的风格干净和轻,我使用了高/高行,默认情况下DataGrid
在顶部垂直位置对齐行内容,但我想设置垂直居中对齐。
我已尝试使用此属性
VerticalAlignment="Center"
DataGrid
选项,但它对我没有帮助。
下面是一个XAML代码的示例,描述了我的DataGrid
,没有垂直居中对齐:
<DataGrid x:Name="ContentDataGrid"
Style="{StaticResource ContentDataGrid}"
ItemsSource="{Binding}"
RowEditEnding="ContentDataGrid_RowEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Header="UserID"
Width="100"
IsReadOnly="True"
Binding="{Binding Path=userID}" />
<DataGridTextColumn Header="UserName"
Width="100"
Binding="{Binding Path=userName}" />
<DataGridTextColumn Header="UserAccessLevel"
Width="100"
Binding="{Binding Path=userAccessLevel}" />
<DataGridTextColumn Header="UserPassword"
Width="*"
Binding="{Binding Path=userPassword}" />
</DataGrid.Columns>
</DataGrid>
执行此代码的结果:
如您所见,所有行内容都具有顶部垂直对齐。
要使每行内容垂直居中对齐,需要添加什么内容?
9条答案
按热度按时间nzrxty8p1#
MSDN上此问题的完整解决方案:DataGrid行内容的垂直对齐方式。
简而言之,在样式文件集中:
在窗口文件中:
这将为您提供所需的结果:
nwlqm0z12#
若要设定个别文字对齐方式,您可以用途:
9udxz4iz3#
下列程式码会垂直对齐DataGridTextColumn储存格的内容:
**编辑:**我已经回到这个问题,并发现下面的解决方案效果更好,它将在水平和垂直方向上居中DataGridTextRows中的所有单元格的内容。
moiiocjp4#
这个对我有用
iklwldmw5#
您也可以不覆写ControlTemplate:
mpgws1up6#
属性值
VerticalAlignment="Center"
将使DataGrid在其父元素中居中。您可能需要VerticalContentAlignment。
z5btuh9x7#
根据Jamier的答案,下面的代码在使用自动生成的列时很有用:
ddrv8njm8#
只是如果有人可能像我一样需要它。
若要只影响单一数据行,您可以使用'ElementStyle'属性:
lyfkaqu19#
这是我的简单的解决方案,它只是完美的工作
我将宽度设置为200,以便您可以注意到差异。