UIElement.Arrange(Rect) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
子要素を配置し、 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)
パラメーター
注釈
フレームワーク レベルWPF要素の派生シナリオでは、Arrange の動作は変更しないでください (シャドウしない限り、変更できません)。 代わりに、クラスの ArrangeOverride 実装をオーバーライドする必要があります。 ArrangeOverride 実装は、既定のWPF フレームワーク レベルのレイアウト操作の一部として、Arrange によって内部的に呼び出されます。 ArrangeCore実装では、子要素がある場合は、各子要素に対してArrangeOverrideも呼び出す必要があります。
WPFコア レベルの要素派生シナリオでは、Arrange の動作を変更しないでください (シャドウしない限り、変更できません)。 代わりに、クラスの ArrangeCore をオーバーライドする必要があります。 ArrangeCore 実装は、既定のWPF フレームワーク レベルのレイアウト操作の一部として、Arrange によって内部的に呼び出されます。 ただし、フレームワーク レベルのレイアウトとそのレイアウト システムWPF使用していることを前提としています。これは、UIElement 基本要素クラスから WPF コア レベルの要素を明示的に派生させる場合は、多くの場合は当たりません。 ArrangeCore実装では、子要素がある場合は、各子要素に対してArrangeも呼び出す必要があります。 WPFコア レベルのシナリオでは、FrameworkElement 派生クラスを使用しないことを意味します。これは、FrameworkElement シールArrangeCoreであるためです。
Windows Presentation Foundation (WPF) でのフレームワーク レベルのレイアウト配置WPF計算は、Measure 呼び出しと Arrange 呼び出しで構成されます。
Measure呼び出し中、レイアウト システムは、指定されたSize (availableSize) 引数を使用して要素のサイズ要件を決定します。
Arrange呼び出し中、レイアウト システムは要素の境界ボックスのサイズと位置を最終処理します。 詳細については、「 レイアウト」を参照してください。
availableSize には、0 から無限大までの任意の数を指定できます。 レイアウトする要素は、Size パラメーターを介して必要な最小availableSizeを返します。
レイアウトが最初にインスタンス化されると、Measureする前に常にArrange呼び出しを受け取ります。 ただし、最初のレイアウト パスの後に、ArrangeなしでMeasure呼び出しを受け取る可能性があります。これは、Arrangeのみに影響するプロパティが変更された場合 (配置など)、または親がArrangeなしでMeasureを受け取ったときに発生する可能性があります。 Measure呼び出しは、Arrange呼び出しを自動的に無効にします。
通常、レイアウトの更新は非同期的に行われます (レイアウト システムによって決定されます)。 要素のサイズ変更 ( Width など) に影響を与えるプロパティに対する変更が、要素にすぐに反映されない場合があります。
Note
レイアウトの更新は、 UpdateLayout メソッドを使用して強制できますが、通常は不要であり、パフォーマンスが低下する可能性があるため、この関数の呼び出しはお勧めしません。 多くの場合、 UpdateLayout の呼び出しが適切な場合は、レイアウト システムが既に更新を処理している可能性があります。 レイアウト システムでは、必要なすべての更新をパッケージの一部として最適化できる方法でレイアウトの変更を処理できます。
レイアウト システムでは、無効なレイアウトの 2 つの個別のキューが保持されます。1 つは Measure 用、1 つは Arrange用です。 レイアウト キューは、ビジュアル ツリー内の要素の順序に基づいて並べ替えられます。 ツリーの上位の要素は、親の繰り返しの変更によって発生する冗長なレイアウトを回避するために、キューの上部にあります。 重複するエントリはキューから自動的に削除され、要素が既に有効な場合は自動的にキューから削除されます。
レイアウトを更新すると、最初に Measure キューが空にされ、次に Arrange キューが空になります。 Arrange キューに要素がある場合、Measure キュー内の要素は配置されません。