【问题标题】:WPF printing multiple elements in the visual tree of a windowWPF 在窗口的可视化树中打印多个元素
【发布时间】:2012-07-02 21:10:16
【问题描述】:

我有一个 WPF 窗口,其中包含三个项目控件以及 3 个按钮。有什么方法可以使用 PrintVisual() 只打印两个项目控件,而没有按钮?

我的第一个想法是动态创建一个 StackPanel 并将我想要打印的控件添加到其中,但如果不先分离它们就无法做到这一点,这似乎有问题。

我想使用 PrintVisual,因为它非常简单。 (很遗憾我不能在这个应用程序上花费太多时间)。

***请原谅没有提供源代码,但我对 WPF 比较陌生,目前我的表单被过度编码。我想我只是好奇是否有一个简单的解决方案。

谢谢。

【问题讨论】:

  • 您是否对 ItemsControl 中的每个项目都使用了视图模型?
  • 不幸的是,没有。这是我第一次尝试 WPF 应用程序,我没有时间掌握所有 MVVM。最终我会转换它,但暂时不会。
  • 不使用视图模型我还有希望吗?
  • 你真的应该使用视图模型,老实说,我想不出一种不需要大量代码的方法,我还建议在投入生产之前尝试一些测试应用程序一种新语言
  • @jimmyjambles 我可能迟早会将其转换为 MVVM。鉴于此,打印所选控件的方法是什么?

标签: wpf printing


【解决方案1】:

如果您只关心打印页面的一部分。将要打印的两个项目控件放置在 Grid 元素中。给它起个名字

<Grid x:Name="printGrid">
    ....
</Grid>

然后就可以调用 PrintDialog.PrintVisual 之类的了

PrintDialog printDialog = new PrintDialog();
printDialog.PrintVisual(printGrid,"The Description");

如果您无法设法仅将这些控件分组到它们自己的网格中,您可以通过在代码中创建一个容器并将现有的命名 itemsControls 添加到它们来手动完成。然后就可以 PrintVisual 容器了。

【讨论】:

  • 最初,我尝试了后一种方法,即在代码中将控件放入网格控件并打印,但我收到一个错误,即控件已经有一个父控件并且我必须重置它。您的第一个建议对我来说效果很好,因为我只需要移动几个控件来隔离我需要打印的内容。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多