Articles in this section
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.

Set the row height based on content while printing in WPF DataGrid

View sample in GitHub.

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied