Introduction
The follwoing code sample completed the work of saving RichTextBoxcontent in to
XPS file format in MVVM. for that i have taken one RichTextBox and one Button
Control in the main window.
In the Delegate Command of Button i have created the object of Print Dialog and
in the print method of Print Dialog passed the FlowDocument of RichTextbox. See
the bellow code for mere clarification.
XAML Code
<window x:class="PrintingRichTextBoxContent.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" title="MainWindow" height="755"
width="702" initialized="Window_Initialized_1">
<Grid HorizontalAlignment="Left" Height="725" VerticalAlignment="Top" Width="694">
<Button Content="Print" HorizontalAlignment="Left" Margin="307,693,0,0" VerticalAlignment="Top" Width="75" Name="btnPrint" Command="{Binding OpenDialogCommand}" CommandParameter="{Binding ElementName=txtPrintText, Path=Document}"/>
<RichTextBox HorizontalAlignment="Left" Height="678" Margin="10,10,0,0" VerticalAlignment="Top" Width="674" Name="txtPrintText" >
</RichTextBox>
</Grid>
</window>
View Model Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Prism.Commands;
using System.Windows.Controls;
using System.ComponentModel;
using System.Printing;
using System.Windows.Documents;
namespace PrintingRichTextBoxContent
{
public class MainWindowViewModel
{
public DelegateCommand<object> OpenDialogCommand { get; set; }
public MainWindowViewModel()
{
this.OpenDialogCommand = new DelegateCommand<object>(OpenDialogCommand_Excute);
}
private void OpenDialogCommand_Excute(object arg)
{
PrintDialog PD = new PrintDialog();
if (PD.ShowDialog() == true)
PD.PrintDocument(((IDocumentPaginatorSource)arg).DocumentPaginator, "abc");
}
}
}
Join the conversation! Your thoughts help the community grow.