none
FixedDocument有办法自动分页吗? RRS feed

  • 问题

  • 我的代码里头用WPF做了个打印页面,但出现了一点点问题……当内容小于页面大小的时候,该方法工作的不错,但当内容大于页面大小的时候,出现了一个问题,就是无法在一页中显示的内容“丢失”了。

    代码中大量利用了Grid和TextBlock,而Grid的高度大小有一些是设置为“自动”的,而且代码中有根据list内容添加Grid的地方,所以无法估量大小。

    我尝试了在所有元素添加之后访问Grid的height、minheight、maxheight、ActualHeight这些属性,但这些属性无法给我有用的值,同时,由于Grid没有复制构造函数,我没有办法复制一个grid后剪切不同的部分再加页面……

    我搜索了互联网,但只发现了一些人有同样地问题,但没有发现解决方案……

     

    谢谢对我的问题的任何思考。

     

    2011年10月4日 15:07

答案

  • 你好,

    Measure/Arrange可以让Grid重新进行布局,如果按照预期的尺寸进行布局仍然会导致被裁剪的情况,说明这个Grid当前的布局不适应你打印的要求。

    解决办法要看你的是什么样的效果了(被裁减的部分你想放在哪里打印)。

    如果你想要的是完全按照界面的样子打印,裁剪的部分打印到下一页,那我觉得你可以创建几个DrawingVisual对象用于打印,可以使用VisualBrush把界面上的元素绘制到DrawingVisual上,然后打印。

    另一种做法是不按照界面上的打印,你可以自己创建单独用以打印的元素来加载同样的数据,并进行打印。

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月10日 3:57
    版主

全部回复

  • 你好,

    在打印之前,你可以对将要打印的控件重新调用Measure和Arrange方法进行布局,根据打印页面的大小进行调整。

    实际上,WPF的PrintVisual是根据控件当前的状态进行打印的。重新布局可能会同时影响界面上的控件(可能会有闪烁的现象)。如果可能的话,我更倾向于用同样的数据重新创建一个单独的控件,专门用以打印。

    希望这对你的问题有帮助。


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月6日 6:39
    版主
  • 谢谢zhu兄的回复,(同时,很抱歉回复的这么晚) 我知道Measure方法是在取得DesiredSize,但Arrange调用后,多出的部分将被裁剪……而同时又没有办法取得grid的部分内容(也没有办法复制一个),如果我将arrange之后的grid加入到page1的children中,那么也没有办法放在两个页面中(因为只能有一个根)。 谢谢您的帮助。
    2011年10月7日 17:03
  • 你好,

    Measure/Arrange可以让Grid重新进行布局,如果按照预期的尺寸进行布局仍然会导致被裁剪的情况,说明这个Grid当前的布局不适应你打印的要求。

    解决办法要看你的是什么样的效果了(被裁减的部分你想放在哪里打印)。

    如果你想要的是完全按照界面的样子打印,裁剪的部分打印到下一页,那我觉得你可以创建几个DrawingVisual对象用于打印,可以使用VisualBrush把界面上的元素绘制到DrawingVisual上,然后打印。

    另一种做法是不按照界面上的打印,你可以自己创建单独用以打印的元素来加载同样的数据,并进行打印。

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月10日 3:57
    版主