我有一个来自 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>
执行这段代码的结果:
如您所见,所有行内容都顶部垂直对齐。
我必须添加什么才能使每行内容居中垂直对齐?
最佳答案
MSDN 上此问题的完整解决方案:Vertical alignment of DataGrid row content .
简而言之,在样式文件集中:
<!--body content datagrid cell vertical centering-->
<Style x:Key="Body_Content_DataGrid_Centering"
TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在窗口文件中:
<DataGrid x:Name="ContentDataGrid"
Style="{StaticResource ContentDataGrid}"
CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
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>
这会给你一个想要的结果:
关于c# - DataGrid 行内容垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981250/