<ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1" Margin="0,0,0,0" HorizontalScrollBarVisibility="Disabled"> <DataGrid x:Name="titration_liquid_infolist" ItemsSource="{Binding Medicine_list}" SelectionMode="Single" FontFamily="kaiti" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" SelectedCellsChanged="titration_liquid_infolist_SelectedCellsChanged"> <DataGrid.Columns> <DataGridTextColumn Header="试剂" Width="*" Binding="{Binding name}"> <DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="VerticalAlignment" Value="Center"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> <DataGridTextColumn Header="浓度" Width="*" Binding="{Binding density}"> <DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="VerticalAlignment" Value="Center"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> <DataGridTextColumn Header="批号" Binding="{Binding batch}" Width="*"> <DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="VerticalAlignment" Value="Center"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> <DataGridTextColumn Header="时间" Width="*" Binding="{Binding date}"> <DataGridTextColumn.ElementStyle> <Style TargetType="TextBl
时间: 2025-04-07 10:11:36 浏览: 32
### 自定义 WPF DataGrid 列样式的解决方案
在 WPF 中,可以通过多种方式自定义 `DataGrid` 的列样式。以下是详细的说明:
#### 设置水平和垂直对齐方式
为了调整 `DataGrid` 单元格中的内容对齐方式,可以修改其单元格模板或直接设置 `CellStyle` 和 `ElementStyle` 属性。对于文本内容的对齐,通常会涉及 `TextBlock.TextAlignment` 或者 `Control.HorizontalContentAlignment` 等属性。
通过以下方法实现:
- 使用 `DataGridCell` 的 `Style` 来控制整个单元格的行为。
- 如果仅需更改特定列的内容对齐,则可以在该列的 `ElementStyle` 中指定 `TextBlock.TextAlignment`[^1]。
示例代码如下:
```xml
<DataGridTextColumn Binding="{Binding YourProperty}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
```
#### 字体绑定
要动态绑定字体到 `DataGrid` 的某列中,可利用 `{Binding}` 表达式来关联数据源中的字体名称或其他相关属性。例如,假设有一个名为 `FontFamilyName` 的属性用于存储字体名,则可通过以下方式进行绑定:
```xml
<DataGridTextColumn Header="Custom Font Column" Binding="{Binding SomeContent}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontSize" Value="{Binding FontSize}"/>
<Setter Property="FontWeight" Value="{Binding FontWeight}"/>
<Setter Property="FontFamily" Value="{Binding FontFamilyName}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
```
上述代码片段展示了如何将字体大小 (`FontSize`)、粗细程度 (`FontWeight`) 及家族类型 (`FontFamily`) 动态绑定至各单元格[^3]。
#### 复杂场景下的自定义
当需要更复杂的布局或者多字段展示时,推荐采用 `DataGridTemplateColumn` 并设计自己的 `DataTemplate` 。此方法允许完全掌控每行列出的数据呈现形式。比如下面的例子演示了一个包含颜色指示器与文字描述相结合的列表项:
```xml
<DataGridTemplateColumn Header="Colorful Items">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<!-- 显示颜色 -->
<Rectangle Fill="{Binding ColorValue}" Width="20" Height="20" Margin="5"/>
<!-- 绑定的文字部分 -->
<TextBlock Text="{Binding Description}" VerticalAlignment="Center"
Foreground="{StaticResource CustomTextColor}"
FontStyle="Italic"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
```
这里还引入了静态资源 (如预设好的笔刷) 作为前景色配置的一部分[^4]。
---
### 总结
以上介绍了几种常见的技术手段来自定义 WPF 应用程序内的 `DataGrid` 控件外观表现,涵盖了基础的对齐需求直到高级别的视觉效果定制化过程。具体实施过程中应依据实际业务逻辑灵活选用合适的技术路径。
阅读全文
相关推荐

















