2012-11-29 62 views
0

我有一個視覺效果分頁器。問題是,當我從代碼創建視覺時,我必須調用Measure和Arrange。但我想給他們無窮的價值。使用WPF打印視覺

stackpanel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); 
    stackpanel.Arrange(new Rect(new Size(double.PositiveInfinity, double.PositiveInfinity))); 

這將導致

不能調用安排上有無限的大小或楠的UIElement。類型'System.Windows.Controls.StackPanel'的父 調用UIElement。 排列調用 'System.Windows.Controls.StackPanel'類型的元素。

回答

3

Measure步驟中,父母問孩子他們想要多少空間給予一定的空間。這個空間的數量也可以是無窮大,這意味着要問孩子們你要多少空間?沒有限制。'

Arrange步驟中,元素物理排列在佈局上。父母告訴孩子他們在哪裏安排,他們得到多少空間。但編排功能的尺寸參數不能爲無窮大,因爲這是元素的實際尺寸。

您是否使用Infinity,因爲您希望視覺佔用打印頁面上的所有可用空間? 如果是,我通常會做的是

Size sz = new Size(printCapabilities.PageImageableArea.ExtentWidth, 
      printCapabilities.PageImageableArea.ExtentHeight); 
//update the layout of the visual to the printer page size. 
yourElement.Measure(sz); 
yourElement.Arrange(new Rect(new Point(printCapabilities.PageImageableArea.OriginWidth, printCapabilities.PageImageableArea.OriginHeight), sz)); 
+0

當我打電話只測量,大小爲0高度/ actualheight。我能爲此做些什麼? – GorillaApe

+0

我編輯了我的答案,我希望這是你所需要的 – Klaus78

+0

實際上我想找到真正的維度,因爲我有一個paginator會將視覺切成塊。我不想限制它在頁面大小。問題是,調用後,安排說它是X高度(它的真實高度)。無論我給了它什麼直接返回正確的實際尺寸。(visual.ActualHeight)問題是,儘管尺寸是真實的,沒有打印如果我不打電話安排第二次與實際尺寸。 – GorillaApe