Category / Section
How to set row height based on content while printing WPF DataGrid (SfDataGrid)?
1 min read
You can set the row height based on content while printing WPF DataGrid (SfDataGrid) by extending the GridPrintManager class and overriding the GetRowHeight method in it.
You can set the instance of the extended GridPrintManager to the SfDatagrid.PrintSettings.PrintManagerBase in the SfDataGrid.Loaded event.
C#
public MainWindow() { InitializeComponent(); this.datagrid.Loaded += Datagrid_Loaded; } private void Datagrid_Loaded(object sender, RoutedEventArgs e) { this.datagrid.PrintSettings.PrintManagerBase = new CustomManagerBase(this.datagrid); }
Refer the below code example in which a custom class is written extending from the GridPrintManager and the GetRowHeight method is overridden to customize the Height of the rows while printing.
C#
public class CustomManagerBase : GridPrintManager { SfDataGrid dataGrid; GridRowSizingOptions gridrowsizing = new GridRowSizingOptions(); double Height = double.NaN; public CustomManagerBase(SfDataGrid grid) : base(grid) { dataGrid = grid; } protected override double GetRowHeight(object record, int rowindex, RowType rowtype) { if (record != null && rowtype == RowType.DefaultRow) { if (this.dataGrid.GridColumnSizer.GetAutoRowHeight(record, gridrowsizing, out Height)) if (Height > 24) return Height; } return base.GetRowHeight(record, rowindex, rowtype); } }
Refer the below image in which the row size is changed based on the content size.