UIElement.Arrange(Rect) メソッド

定義

子要素を配置し、UIElement のサイズを決定します。 親要素はそれぞれの ArrangeCore(Rect) 実装 (または WPF フレームワーク レベルの同等実装) からこのメソッドを呼び出し、レイアウトを再帰的に更新します。 このメソッドは、レイアウト更新の 2 番目のパスを構成します。

public:
 void Arrange(System::Windows::Rect finalRect);
public void Arrange (System.Windows.Rect finalRect);
member this.Arrange : System.Windows.Rect -> unit
Public Sub Arrange (finalRect As Rect)

パラメーター

finalRect
Rect

親が子要素に対して計算する最終的なサイズ。Rect のインスタンスを指定します。

注釈

WPF フレームワーク レベルの要素派生シナリオの場合、 の Arrange 動作は変更しないでください (シャドウしない限り、変更できません)。 代わりに、クラスの実装を ArrangeOverride オーバーライドする必要があります。 実装 ArrangeOverride は、既定の WPF フレームワーク レベルのレイアウト操作の一部として、 によって Arrange 内部的に呼び出されます。 実装では ArrangeCore 、子要素がある場合は、各子要素を 呼び出す ArrangeOverride 必要もあります。

WPF コア レベルの要素派生シナリオの場合、 の動作 Arrange は変更しないでください (シャドウしない限り、変更できません)。 代わりに、クラスで をオーバーライド ArrangeCore する必要があります。 実装 ArrangeCore は、既定の WPF フレームワーク レベルのレイアウト操作の一部として、 によって Arrange 内部的に呼び出されます。 ただし、これは WPF フレームワーク レベルのレイアウトとそのレイアウト システムを使用していることを前提としています。これは、WPF コア レベルの要素を基本要素クラスから UIElement 具体的に派生させる場合は、多くの場合は当てはまれません。 実装では ArrangeCore 、子要素がある場合は、各子要素を 呼び出す Arrange 必要もあります。 WPF のコア レベルのシナリオでは、 がシールArrangeCoreされるためFrameworkElement、派生クラスをFrameworkElement使用しないことを意味します。

Windows Presentation Foundation (WPF) での WPF フレームワーク レベルのレイアウト配置の計算は、呼び出しと呼び出しでMeasureArrange構成されます。 Measure呼び出し中、レイアウト システムは、指定Sizeされた (availableSize) 引数を使用して要素のサイズ要件を決定します。 Arrange呼び出し中に、レイアウト システムは要素の境界ボックスのサイズと位置を最終処理します。 詳細については、「Layout」 (レイアウト) を参照してください。

availableSize には、0 から無限大までの任意の数値を指定できます。 レイアウトする要素は、 パラメーターを介して必要な最小値 SizeavailableSize 返します。

レイアウトが最初にインスタンス化されると、常に の前Arrangeに呼び出しをMeasure受け取ります。 ただし、最初のレイアウト パスの後に、 を指定せずにMeasure呼び出しをArrange受け取る場合があります。これは、 のみにArrange影響するプロパティが変更された場合 (配置など)、または親が を持たない MeasureArrange受け取った場合に発生する可能性があります。 Measure呼び出しによって、呼び出しが自動的にArrange無効になります。

通常、レイアウトの更新は非同期的に行われます (レイアウト システムによって決定される時点)。 要素のサイズ設定 (など Width) に影響を与えるプロパティの変更が要素にすぐに反映されない場合があります。

注意

レイアウトの更新は、 メソッドを UpdateLayout 使用して強制できます。ただし、通常は不要であり、パフォーマンスが低下する可能性があるため、この関数を呼び出すことはお勧めしません。 呼び出し UpdateLayout が適切である可能性がある多くの状況では、レイアウト システムは更新プログラムを既に処理している可能性があります。 レイアウト システムでは、パッケージの一部として必要なすべての更新プログラムを最適化できる方法でレイアウトの変更を処理できます。

レイアウト システムは、無効なレイアウトの 2 つの個別のキューを保持します。1 つは に Measure 、もう 1 つは 用です Arrange。 レイアウト キューは、ビジュアル ツリー内の要素の順序に基づいて並べ替えられます。 ツリー内の上位の要素は、親の繰り返しの変更によって発生する冗長なレイアウトを回避するために、キューの上部にあります。 重複するエントリはキューから自動的に削除され、要素は既に有効な場合は自動的にキューから削除されます。

レイアウトを更新すると、 Measure キューが最初に空にされ、その後にキューが Arrange 空になります。 キューに Arrange 要素がある場合、キュー内の Measure 要素は配置されません。

適用対象