0

视觉v是我试图打印的用户控件中网格部分的一部分。我是 c# 新手,不完全确定为什么会收到此错误。这可能与xaml代码有关吗?

private void Print( Visual v )
        {
            var pd = new PrintDialog();
            var document = new FixedDocument();
            var fixedPage = new FixedPage();
            //System.Windows.FrameworkElement e = v as System.Windows.FrameworkElement;
            //if( e == null )



Transform originalScale = fixedPage.LayoutTransform;
                //get selected printer capabilities
System.Printing.PrintCapabilities capabilities = pd.PrintQueue.GetPrintCapabilities( pd.PrintTicket );
System.Windows.Size sz = new System.Windows.Size( capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight );
fixedPage.Width = sz.Width;
fixedPage.Height = sz.Height;
// Add visual, measure/arrange page.
fixedPage.Children.Add((FrameworkElement)v);
fixedPage.Measure(sz);
fixedPage.LayoutTransform = new ScaleTransform( 0.2823293807641634 + 0.2498215560314061, 0.2823293807641634 + 0.2498215560314061 );
fixedPage.Arrange( new System.Windows.Rect( new System.Windows.Point( capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight ), sz ) );
fixedPage.UpdateLayout();
fixedPage.LayoutTransform = originalScale;
//var pageContent = new PageContent();
//((IAddChild)pageContent).AddChild(internalPage);
//document.Pages.Add(pageContent);


pd.PrintDocument(document.DocumentPaginator, "My Document");

            }
4

1 回答 1

0

本质上,此错误表明 ui 元素已被使用并且不能在另一个结构中使用 - 它只能有一个父元素。我从您的问题中收集到的内容,您正试图仅显示并打印相同的视觉元素。

您的选择是:

  1. 错误消息中所述的列表项从显示控件的视图中删除控件并打印

  2. 创建该视觉元素的新实例以进行打印

我建议第二个选项,即使知道设置它可能需要更多工作。

于 2013-09-23T11:19:42.900 回答