wpf - 如何在 WPF DataGrid 中垂直居中行的内容?

标签 wpf coding-style datagrid vertical-alignment

我想在 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"/>

当应用于 ItemsControls 时,此属性通常会修改每个单独项容器的对齐方式。在您的情况下,这应该使所有行的内容都居中对齐。

更新

好像 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/

相关文章:

wpf - 删除 ContextMenu 上的图标空间

wpf - 测试驱动开发 - WPF

java - 在工厂中使用反射

coding-style - 评论横幅/标题最佳实践/示例?

silverlight - 具有 CellTemplate 和绑定(bind)的自定义 DataGrid 列

c# - MenuItem 通过 RelayCommand ala MVVM-Light & Header 将所选项目传递给 ViewModel

c# - WPF Multitrigger.ExitActions 将覆盖正常触发器

delphi - 接口(interface)中的构造函数

c# - DataGrid 显示错误的日期格式

C#.net 从 .bat 文件的结果填充数据网格