我想設置我的WPF窗口的可打印視圖,並且我正在很難將內容正確設置大小(驚喜!)。WPF Window.Measure沒有設置DesiredSize
具體來說,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.DesiredSize在第3行有到.Measure一個呼叫,這會導致在打印頁爲空白,當然後總是0,0。我認爲這一點。測量應該設置該屬性。有趣的是,如果在那裏堅持呼叫.ShowDialog()而不是測量&安排,它工作正常,據我瞭解,這意味着問題是沒有發生佈局傳遞。我只是無法弄清楚如何強制它發生。
任何幫助將不勝感激。
編輯:FOR print查看
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>
初始化爲每個用戶控件的調用揭開序幕很多東西的結合,等等...有涉及很多代碼。這些完全相同的控件在main.xaml頁面上使用,與.Initialize()調用相同,一切按預期工作。