0

ビジュアル用のページ付けがあります。問題は、コードからビジュアルを作成するときに、MeasureandArrangeを呼び出さなければならないことです。しかし、私はそれらに無限の値を与えたいです。

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

これは〜をひき起こす

サイズが無限またはNaNのUIElementでArrangeを呼び出すことはできません。タイプ'System.Windows.Controls.StackPanel'の親は、UIElementを呼び出します。タイプ'System.Windows.Controls.StackPanel'の要素で呼び出されるアレンジ。

4

1 に答える 1

3

このMeasureステップでは、親が子供たちに、一定のスペースが与えられた場合にどのくらいのスペースが必要かを尋ねます。このスペースの量は無限になることもあります。これは、子供たちに「どのくらいのスペースが欲しいですか?」と尋ねることを意味します。制限はありません。

このArrangeステップでは、要素がレイアウト上に物理的に配置されます。親は、子供たちがどこに配置され、どのくらいのスペースが得られるかを子供たちに伝えます。ただし、これが要素の実際のサイズであるため、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));
于 2012-11-30T07:39:20.160 に答える