Я пытаюсь напечатать 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" />