C# 以编程方式将FrameworkElement添加到页面

C# 以编程方式将FrameworkElement添加到页面,c#,xaml,C#,Xaml,在我的UWP应用程序中,我想创建一个可以打印的页面对象。目前我只有一个框架元素的列表(WebViewBrush)。有没有什么方法可以创建一个页面,它唯一的特性就是框架元素 我的想法是: Page newPage = new Page(); newPage.Add(frameworkElement); 那不管用,但那正是我要找的东西。我看不到任何能证明这一点的东西,但我可能找错了东西。。。谢谢你的建议 编辑 编辑2 一个页面只能包含一个子页面。如果只希望在页面中显示单个框架元素,则可以执行以下

在我的UWP应用程序中,我想创建一个可以打印的
页面
对象。目前我只有一个
框架元素的列表
(WebViewBrush)。有没有什么方法可以创建一个页面,它唯一的特性就是框架元素

我的想法是:

Page newPage = new Page();
newPage.Add(frameworkElement);
那不管用,但那正是我要找的东西。我看不到任何能证明这一点的东西,但我可能找错了东西。。。谢谢你的建议

编辑

编辑2
一个
页面
只能包含一个子页面。如果只希望在
页面中显示单个
框架元素
,则可以执行以下操作:

newPage.Content = frameworkElement;
否则,您将需要创建一个可以包含多个子容器:

StackPanel panel = new StackPanel();

panel.Children.Add(frameworkElement);
// Add your many other children.

newPage.Content = panel;
当然,还有很多其他的方法可以使用

更新


只是总结一下最终的解决方案。虽然这可能并不理想,但由于通过
VisualBrush
克隆在UWP中不是一个选项,因此决定生成第二个
pageList
。理论上,画笔不应该太大,也不应该占用太多内存。

谢谢,我接受了这个答案,因为它可以广泛地工作-但是当我使用第二种方法时,我得到一个错误
{“没有检测到安装的组件。\r\n\r\n一个元素已经是另一个元素的子元素了。”}
子项上的
。是否添加
行?FrameworkElement的类型为
Windows.UI.Xaml.Shapes.Rectangle
,如果有帮助的话。感谢您要停止看到该异常,您需要确保您的frameworkElement尚未添加到UI。你还有这条线吗?Content=frameworkElement;如果是这样,请删除它,您将不会看到异常。@b85411或者您正在将
frameworkElement
添加到
StackPanel
中不止一次。我编辑了第一条消息以包含一个屏幕截图-我想我不会添加两次。我在
foreach
中添加了一个中断,以验证它是否也是在第一次被击中时发生的。该代码是否揭示了任何潜在问题?Thanks@b85411您显示打印模式的事实使我相信
individualPage
实际上是另一个控件的子控件。可以在以下行放置断点:
panel.Children.Add(individualPage)
并检查
individualPage
上的父属性设置为什么?如果它已经显示在应用程序中的某个位置(即父项不为null),则需要首先从UI的该部分删除它