Печать динамически созданного WindowsFormsHost в WPF - PullRequest
2 голосов
/ 02 марта 2011

Я пытаюсь напечатать WindowsFormsHost в приложении WPF. Он печатает нормально, если объект WindowsFormsHost создан xaml, но печатает пустую страницу, если я создаю WindowsFormsHost в коде.

Как мне создать объект WindowsFormsHost в коде, чтобы его можно было распечатать?

Вот упрощенный, но рабочий код:

            PrintDialog dialog = new PrintDialog();
            if (dialog.ShowDialog() == true)
            {
                System.Windows.Forms.TextBox ctrl = new System.Windows.Forms.TextBox();
                ctrl.Text = "Test";
                ctrl.BackColor = System.Drawing.Color.Red;
#if RUNTIME
                WindowsFormsHost wfh = new WindowsFormsHost();
                wfh.Child = ctrl;
                FrameworkElement visual = wfh;
#else
                WFHostTest.Child = ctrl;
                FrameworkElement visual = WFHostTest;
#endif

                visual.Margin = new Thickness(0, 0, 0, 0);
                visual.Measure(new Size(dialog.PrintableAreaWidth, dialog.PrintableAreaHeight));   
                visual.Arrange(new Rect(0, 0, dialog.PrintableAreaWidth, dialog.PrintableAreaHeight)); 
                visual.UpdateLayout();
                dialog.PrintVisual(visual, "Test");
            }

Этот код печатает TextBox, только когда RUNTIME не определен. Если задано RUNTIME, печатается пустая страница. WFHostTest определяется в xaml как

<WindowsFormsHost Grid.Column="1" Grid.Row="2" Name="WFHostTest" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...