我正在尝试设置我的WPF窗口的可打印视图,但我很难将内容调整到合适的大小(出乎意料!)。
具体来说,Measure似乎没有设置我的窗口的DesiredSize属性。
我尝试采用的基本方法是,我创建了一个单独的窗口对象(PrintView),其中包含我希望打印的控件。我现在正以编程方式尝试实例化窗口,然后将其发送到打印机。
PrintView printView = new PrintView(m_Model.Clone() as MyModel);
printView.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
printView.Arrange(new Rect(new Point(0, 0), printView.DesiredSize));
thePrintDialog.PrintVisual(printView, "Strategy");//blank page every time
不幸的是,printView。第3行的DesiredSize在呼叫后始终为0,0。当然,这会导致打印页面为空白。我是这么想的。度量值应该设置该属性。有趣的是,如果坚持打电话给。ShowDialog()在其中,而不是度量值&安排,它工作正常,所以据我所知,这意味着问题是布局通行证没有发生。我就是不知道该怎么强迫它发生。
任何帮助都将不胜感激。
编辑:PrintView的过账代码
public PrintView(MyModel p_Model)
{
InitializeComponent();
TabSetContent1.Initialize(p_Model, p_Model, new Model.Workbook());
TabCompareContent1.Initialize(p_Model, new Model.Workbook());
}
以及XAML:
<Window x:Class="Cmi.Analytics.DecisionPathway.Ui.UserControls.Printing.PrintView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:components="clr-namespace:MyNamespace">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<components:TabSetContent x:Name="TabSetContent1" Grid.Row="0" IsPrintView="true" />
<components:TabCompareContent x:Name="TabCompareContent1" Grid.Row="1" IsPrintView="true" />
</Grid>
</Window>
对每个usercontrols进行初始化的调用启动了大量绑定工作,等等。。。其中涉及到相当多的代码。这些完全相同的控件用于主控台。具有相同调用的xaml页面。Initialize(),一切都按预期进行。