Printing
----------------------------------------
Demonstrates printing C1Scheduler's views via the C1.C1Preview.C1PrintDocument component.

The sample is based on using C1.C1Preview.C1PrintDocument component and System.Windows.Controls.DocumentViewer.
The sample uses C1PrintDocument templates included into C1Schedule assembly resources. 
These templates use C1PrintDocument features included into C1.WPF.C1Report assembly build 3.0.20083.51001. 
You might get run-time errors at using them with earlier versions of the C1.WPF.C1Report assembly.

By default, when user click "Print" button, he gets Print Options dialog, where he can select 
the style for printing. Furthermore, he can edit some document properties in a Tags input form.

All printing options, the set of printing styles and printing styles properties are defined as a part of
the Printing.PrintInfo class.
  
Sample classes:
  
<pre>
	public enum PrintContextType
		defines the printing context for the PrintStyle object.
	
	public class PrintPreviewWindow 
		shows the DocumentViewer control.	

	public class PrintInfo  
	    the object used to manage schedule printing.	

	public class PrintStyle 
		represents the single printing style for a schedule control.

	public class PrintStyleCollection : KeyedCollection<string, PrintStyle> 
		represents the keyed collection of scheduler printing styles. The PrintStyle.StyleName property 
		is used as a collection key.

	public class PrintOptionsDialog : Window  
		allows selecting printing style from the list of available styles and setting other printing options.
</pre>			

The sample uses default C1PrintDocument form for editing document tags. You can create own Print Style options 
form for editing tags according your need. Analyze tag properties to determine tag value type, label and 
other input options to use in Print Style options form.

Tags used in default templates:

  - Page header tags:
		HeaderLeft, HeaderCenter, HeaderRight - string values used for printing in a page header;
		HeaderColor - System.Windows.Media.Color value used for printing a page header;
		HeaderFont - System.Drawing.Font used for printing a page header;

  - Page footer tags:
		FooterLeft, FooterCenter, FooterRight - string values used for printing in a page footer;
		FooterColor - System.Windows.Media.Color value used for printing a page footer;
		FooterFont - System.Drawing.Font used for printing a page footer;
	
  - ReverseOnEvenPages - a boolean value determining whether to reverse page footers and headers on even pages.

  - DateHeadingsFont - System.Drawing.Font use for printing date headings;
  
  - AppointmentsFont - System.Drawing.Font use for printing appointments;

  - CalendarInfo - C1.C1Schedule.CalendarInfo object keeping calendar-related information;

  - Appointments - appointments to print. This tag may be type of C1.C1Schedule.AppointmentCollection
				   or List<C1.C1Schedule.Appointment>;
	
  - Appointment - C1.C1Schedule.Appointment object to print;

  - StartDate - System.DateTime value determining the beginning of the print range;

  - EndDate - System.DateTime value determining the end of the print range;

  - StartTime - System.DateTime value determining the beginning of the working day (used in a daily style);

  - EndTime - System.DateTime value determining the end of the working day (used in a daily style);

  - IncludeTasks - a boolean value determining whether resulting document should contain place for tasks;
  
  - IncludeBlankNotes - a boolean value determining whether resulting document should contain blank place for notes;
  
  - IncludeLinedNotes - a boolean value determining whether resulting document should contain lined place for notes;
  
  - WorkDaysOnly - a boolean value determining whether weekends should be omitted at printing month view style;

  - HidePrivateAppointments - a boolean value determining whether private appointments should be hidden in resulting document;

  - InsertPageBreaks - a boolean value determining whether page breaks should be inserter in details style;
  
  - PageBreak - determines whether page break should be inserted every Day, Week or Month in details style.


You can use the sample code as it is or edit it in any convenient way.	

Note: if your applcation target Framework is .Net 4.0, read comments in the PrintInfo.AddScheduleReferences method
and make sure that you add correct external assembly reference for INotifyCollectionChanged interface.	

