private static RadRichTextBox CreateRadRichTextBox(GridViewDataControl grid, PrintSettings settings)
 {
     return new RadRichTextBox
         {
             IsReadOnly = true,
             LayoutMode = DocumentLayoutMode.Paged,
             IsSelectionEnabled = false,
             IsSpellCheckingEnabled = false,
             Document = CreateDocument(grid, settings)
         };
 }
 public static void PrintPreview(this RadGridView grid, PrintSettings settings)
 {
     var rtb = CreateRadRichTextBox(grid, settings);
     var window = CreatePreviewWindow(rtb);
     window.ShowDialog();
 }
        private static RadDocument CreateDocument(GridViewDataControl grid, PrintSettings settings)
        {
            RadDocument document;

            using (var stream = new MemoryStream())
            {
                EventHandler<GridViewElementExportingEventArgs> elementExporting = (s, e) =>
                {
                    switch (e.Element)
                    {
                        case ExportElement.Table:
                            e.Attributes["border"] = "0";
                            break;
                        case ExportElement.HeaderRow:
                            e.Styles.Add("background-color", settings.HeaderBackground.ToString().Remove(1, 2));
                            break;
                        case ExportElement.GroupHeaderRow:
                            e.Styles.Add("background-color", settings.GroupHeaderBackground.ToString().Remove(1, 2));
                            break;
                        case ExportElement.Row:
                            e.Styles.Add("background-color", settings.RowBackground.ToString().Remove(1, 2));
                            break;
                    }
                };

                grid.ElementExporting += elementExporting;

                grid.Export(stream, new GridViewExportOptions
                    {
                        Format = Telerik.Windows.Controls.ExportFormat.Html,
                        ShowColumnFooters = grid.ShowColumnFooters,
                        ShowColumnHeaders = grid.ShowColumnHeaders,
                        ShowGroupFooters = grid.ShowGroupFooters
                    });

                grid.ElementExporting -= elementExporting;

                stream.Position = 0;

                document = new HtmlFormatProvider().Import(stream);
            }

            return document;
        }
        public static void Print(this RadGridView grid, PrintSettings settings)
        {
            var rtb = CreateRadRichTextBox(grid, settings);
            var window = new RadWindow { Height = 0, Width = 0, Opacity = 0, Content = rtb };
            rtb.PrintCompleted += (s, e) => window.Close();
            window.Show();

            rtb.Print("MyDocument", Telerik.Windows.Documents.UI.PrintMode.Native);
        }