Layers represent groups of optional content which can be hidden or shown.
Changing the value of the DocumentSource property at runtime causes the RadPdfViewer to display a busy indicator and not update the displayed PDF file with the new one.
To work this around, derive from the RadPdfViewer and create a new dependency property for the property of the type of PdfDocumentSource (for example, from your view model). In its callback method, call the SetDocumentSource method of the derived RadPdfViewer by passing the new value:
public class MyPdfViewer : RadPdfViewer
{
public PdfDocumentSource PdfDocumentSource
{
get { return (PdfDocumentSource)GetValue(PdfDocumentSourceProperty); }
set { SetValue(PdfDocumentSourceProperty, value); }
}
public static readonly DependencyProperty PdfDocumentSourceProperty =
DependencyProperty.Register("PdfDocumentSource", typeof(PdfDocumentSource), typeof(MyPdfViewer), new PropertyMetadata(new PropertyChangedCallback(OnDocumentSourceChanged)));
private static void OnDocumentSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MyPdfViewer viewer = (MyPdfViewer)d;
viewer.SetDocumentSource((PdfDocumentSource)e.NewValue);
}
}
<local:MyPdfViewer x:Name="pdfViewer" PdfDocumentSource="{Binding MyViewModelPropertyOfTypePdfDocumentSource}" />
The default WPF PrintDialog cannot print asynchronously when it is shown in UI. However, you may see the demo in this forum post showing how to create custom PrintDialog and perform async printing with it: http://www.telerik.com/forums/pdfviewer-print-makes-ui-unresponsive#js0YdzFWc0Oa8C3g6a18lg
The images are loaded asynchronously and when scrolling too fast, the loader might fail to load an image if it is bigger.
When using SaveAsCommandDescriptor of RadPdfViewer and trying to replace a pdf file that is currently open in adobe reader causes the following exception:
System.IO.IOException: The process can not access file "C:\Temp\test.pdf" because it used by another process.