コード例 #1
0
        // Token: 0x06007A0D RID: 31245 RVA: 0x002291F0 File Offset: 0x002273F0
        private static void OnCommandPrint(object sender, ExecutedRoutedEventArgs e)
        {
            RootBrowserWindow rootBrowserWindow = sender as RootBrowserWindow;

            Invariant.Assert(rootBrowserWindow != null);
            if (!rootBrowserWindow._isPrintingFromRBW)
            {
                Visual visual = rootBrowserWindow.Content as Visual;
                if (visual == null)
                {
                    IInputElement inputElement = rootBrowserWindow.Content as IInputElement;
                    if (inputElement != null)
                    {
                        rootBrowserWindow._isPrintingFromRBW = true;
                        try
                        {
                            if (ApplicationCommands.Print.CanExecute(null, inputElement))
                            {
                                ApplicationCommands.Print.Execute(null, inputElement);
                                return;
                            }
                        }
                        finally
                        {
                            rootBrowserWindow._isPrintingFromRBW = false;
                        }
                    }
                }
                PrintDialog printDialog = new PrintDialog();
                if (printDialog.ShowDialog() == true)
                {
                    string printJobDescription = RootBrowserWindow.GetPrintJobDescription(RootBrowserWindow.App.MainWindow);
                    if (visual == null)
                    {
                        INavigatorImpl navigatorImpl = rootBrowserWindow;
                        Invariant.Assert(navigatorImpl != null);
                        visual = navigatorImpl.FindRootViewer();
                        Invariant.Assert(visual != null);
                    }
                    Rect        imageableRect = RootBrowserWindow.GetImageableRect(printDialog);
                    VisualBrush visualBrush   = new VisualBrush(visual);
                    visualBrush.Stretch = Stretch.None;
                    DrawingVisual  drawingVisual  = new DrawingVisual();
                    DrawingContext drawingContext = drawingVisual.RenderOpen();
                    drawingContext.DrawRectangle(visualBrush, null, new Rect(imageableRect.X, imageableRect.Y, visual.VisualDescendantBounds.Width, visual.VisualDescendantBounds.Height));
                    drawingContext.Close();
                    printDialog.PrintVisual(drawingVisual, printJobDescription);
                }
            }
        }