or

<telerik:GridViewColumn Header="{x:Static commonResources:CommonResources.ActionColumn}" > <telerik:GridViewColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <bc:RadGridViewActionButton NormalImage="../Images/dgy_040_edit_normal.png" MouseOverImage="../Images/bk_040_edit_normal.png" Visibility="{Binding Path=DataContext.IsModifySupported, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Converter={StaticResource BooleanToVisibilityConverter}}" ToolTip="{Binding Path=DataContext.ModifyCommandToolTip, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" Command="{Binding Path=DataContext.ModifyCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" /> <bc:RadGridViewActionButton NormalImage="../Images/dgy_200_details_normal.png" MouseOverImage="../Images/bk_200_details_normal.png" Visibility="{Binding Path=DataContext.IsViewSupported, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Converter={StaticResource BooleanToVisibilityConverter}}" ToolTip="{Binding Path=DataContext.DetailsCommandToolTip, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" Command="{Binding Path=DataContext.DetailsCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" /> <bc:RadGridViewActionButton NormalImage="../Images/dgy_030_delete_normal.png" MouseOverImage="../Images/bk_030_delete_normal.png" Visibility="{Binding Path=DataContext.IsDeleteSupported, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Converter={StaticResource BooleanToVisibilityConverter}}" ToolTip="{Binding Path=DataContext.DeleteCommandToolTip, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" Command="{Binding Path=DataContext.DeleteCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" /> <bc:RadGridViewActionButton NormalImage="../Images/dgy_028_copy_normal.png" MouseOverImage="../Images/bk_028_copy_normal.png" Visibility="{Binding Path=DataContext.IsCopySupported, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Converter={StaticResource BooleanToVisibilityConverter}}" ToolTip="{Binding Path=DataContext.CopyCommandToolTip, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" Command="{Binding Path=DataContext.CopyCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" /> </StackPanel> </DataTemplate> </telerik:GridViewColumn.CellTemplate></telerik:GridViewColumn>01.<telerik:RadMenu Grid.Row="2" Grid.Column="1" Width="40" HorizontalAlignment="Right" Background="Transparent" ClickToOpen="True">02. <telerik:RadMenuItem Header="" Width="40" Height="40" ToolTip="Settings">03. <telerik:RadMenuItem.Icon>04. <Image x:Name="btnSetting" Source="Resources/setting.png" Stretch="UniformToFill">05. </Image>06. </telerik:RadMenuItem.Icon>07. <Trigger Property="IsMouseOver" Value="true">08. <Setter TargetName="btnSetting" Property="Source" Value="Resources/setting-hover.png"></Setter>09. </Trigger>10. </telerik:RadMenuItem>11.</telerik:RadMenu>

//loop throught documentsdo{ RadDocument currentDocument = document.MailMergeCurrentRecord(); if (currentDocument != null) { //freeze images foreach (var image in currentDocument.EnumerateChildrenOfType<ImageInline>()) image.ImageSource.Freeze(); //Floating images foreach (var image in currentDocument.EnumerateChildrenOfType<FloatingImageBlock>()) image.ImageInline.ImageSource.Freeze(); lock (baton) documentQueue.Enqueue(currentDocument);//add new document to a queue for further processing currentDocument = null; }} while (document.MailMergeDataSource.MoveToNext());public static async Task<Stream> ExportToPDF(RadDocument document){ PdfFormatProvider provider = new PdfFormatProvider(); Stream output = new MemoryStream(); await StartSTATask(() => { provider.Export(document, output); }); output.Position = 0; return output;}at System.Windows.Threading.DispatcherObject.VerifyAccess() at System.Windows.Media.Imaging.BitmapSource.get_PixelWidth() at System.Windows.Media.Imaging.WriteableBitmap.InitFromBitmapSource(BitmapSource source) at Telerik.Windows.Media.Imaging.RadBitmap..ctor(BitmapSource image) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.SetImageAlpha(WatermarkImageSettings imageSettings, Byte alpha) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.DrawWatermark(Header header, SectionLayoutBox sectionBox, PdfContentsWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.ExportHeadersAndFooters(SectionLayoutBox sectionBox, PdfContentsWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.ExportPage(SectionLayoutBox sectionBox, PdfContentsWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.<>c__DisplayClass1.<Export>b__0(PdfContentsWriter contentsWriter) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfContents.WriteContents(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfStream.WriteToCore(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfObject.WriteTo(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfWriter.WritePdfObject(PdfObject obj) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.Export() at Telerik.Windows.Documents.FormatProviders.Pdf.PdfFormatProvider.Export(RadDocument document, Stream output) at IP_DocumentProcessor.MailMerge.IP_MailMerge.<>c__DisplayClass14.<ExportToPDF>b__13() in d:\VB Projects + Silverlight\VS2012APP\IP_DocumentProcessor\IP_DocumentProcessor\MailMerge\IP_MailMerge.cs:line 476 at IP_DocumentProcessor.MailMerge.IP_MailMerge.<>c__DisplayClass1a.<StartSTATask>b__19() in d:\VB Projects + Silverlight\VS2012APP\IP_DocumentProcessor\IP_DocumentProcessor\MailMerge\IP_MailMerge.cs:line 500--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at IP_DocumentProcessor.MailMerge.IP_MailMerge.<StartSTATask>d__1c.MoveNext() in d:\VB Projects + Silverlight\VS2012APP\IP_DocumentProcessor\IP_DocumentProcessor\MailMerge\IP_MailMerge.cs:line 510--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at IP_DocumentProcessor.MailMerge.IP_MailMerge.<ExportToPDF>d__16.MoveNext() in d:\VB Projects + Silverlight\VS2012APP\IP_DocumentProcessor\IP_DocumentProcessor\MailMerge\IP_MailMerge.cs:line 474--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at IP_DocumentProcessor.MailMerge.IP_MailMerge.<GenerateStreams>d__7.MoveNext() in d:\VB Projects + Silverlight\VS2012APP\IP_DocumentProcessor\IP_DocumentProcessor\MailMerge\IP_MailMerge.cs:line 282--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch()