回复 1楼CanYou8的帖子
谢谢您的反馈。
对于您的问题,请参考如下:
1.合并ColumnHeader的位置HorizontalContentAlignment属性设置为Center。
参考代码:
- <!-- Column header style -->
- <Style x:Key="C1ColumnHeader" TargetType="c1:DataGridColumnHeaderPresenter">
- <Setter Property="HorizontalContentAlignment" Value="Center" />
- </Style>
复制代码- <Style TargetType="c1:C1DataGrid">
- <Setter Property="ColumnHeaderStyle" Value="{StaticResource C1ColumnHeader}"/>
- </Style>
复制代码
2.MergingHelper.cs 文件是一个为DataGrid创建的继承合并逻辑的自定义类。
对于您的自定义逻辑,默认的合并功能无法实现。
从您的图片来看,您是有特定的合并逻辑,我觉得您并不需要MergeHelper。您可以使用MergingCells事件来合并您期望合并的区域。
例如:
- c1DataGrid1.MergingCells += (s, e) =>
- {
- var _grid = s as C1DataGrid;
- var _mergeList = new List<DataGridCellsRange>();
- //此处添加您想要合并的区域,写自己的合并逻辑
- _mergeList.Add(new DataGridCellsRange(_grid.GetCell(0, 0), _grid.GetCell(1, 0)));
- foreach (var range in _mergeList)
- {
- e.Merge(range);
- }
- };
复制代码
columnheader的文字居中也可以通过LoadedCellPresenter事件完成。
- c1DataGrid1.LoadedCellPresenter += (s, e) =>
- {
- if (e.Cell.Presenter.Content is DataGridColumnHeaderPresenter)
- {
- var cc = (e.Cell.Presenter.Content as ContentControl);
- var tb = cc.Content as TextBlock;
- tb.TextAlignment = TextAlignment.Center;
- tb.HorizontalAlignment = HorizontalAlignment.Center;
- }
- };
复制代码 |