このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

UIElement.Arrange メソッド

子オブジェクトを配置し、UIElement のサイズを決定します。 子要素に対してカスタム レイアウトを実装する親オブジェクトは、それらのレイアウトのオーバーライド実装からこのメソッドを呼び出し、レイアウトを再帰的に更新する必要があります。

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public void Arrange(
	Rect finalRect
)

パラメーター

finalRect
型 : System.Windows.Rect
親がレイアウトの子に対して計算する最終的なサイズ。Rect 値を指定します。

例外条件
InvalidOperationException

finalRectDouble.NaN または無限値が含まれています。 「解説」を参照してください。

カスタム レイアウト アクションを実行するメソッドをオーバーライドするコンテキストの外部で、Measure または Arrange を呼び出す必要はありません。 Silverlight レイアウトは、実行時に検出されたオブジェクト ツリーとレイアウト関連のプロパティの変更に基づき、独立して動作します。 詳細については、Silverlight のレイアウト システム のトピックを参照してください。

Measure に渡す finalRect は、どのような Rect 値に対しても Double.NaN 値を含むことはできません。 また、どのような Rect 値に対しても、finalRect が無限値を含むことはできません。

通常、Arrange の呼び出しに含まれる finalRect では、各要素の DesiredSize からの height および width 値が使用されます。 ただし、要素に親のレイアウトで受け入れられない DesiredSize が含まれる場合や、すべての子要素の DesiredSize 値の合計が受け入れまたは調整できない値となる場合には、この通常の動作に対して例外的処理が必要となる可能性があります。 そのような場合には、子要素のコンテンツがクリップされたり、サイズが変更されたり、またはスクロール領域に配置されたりします。これはすべて、レイアウトの親コンテナーで有効になっている特定の機能によって決まります。

ArrangeOverride の実装内で Arrange を使用する方法を次の例に示します。


// Second arrange all children and return final size of panel
protected override Size ArrangeOverride(Size finalSize)
{
    // Get the collection of children
    UIElementCollection mychildren = Children;

    // Get total number of children
    int count = mychildren.Count;

    // Arrange children
    // We're only allowing 9 children in this panel.  More children will get a 0x0 layout slot.
    int i;
    for (i = 0; i < 9; i++)
    {

        // Get (left, top) origin point for the element in the 3x3 block
        Point cellOrigin = GetOrigin(i, 3, new Size(100, 100));

        // Arrange child
        // Get desired height and width. This will not be larger than 100x100 as set in MeasureOverride.
        double dw = mychildren[i].DesiredSize.Width;
        double dh = mychildren[i].DesiredSize.Height;

        mychildren[i].Arrange(new Rect(cellOrigin.X, cellOrigin.Y, dw, dh));

    }

    // Give the remaining children a 0x0 layout slot
    for (i = 9; i < count; i++)
    {
        mychildren[i].Arrange(new Rect(0, 0, 0, 0));
    }


    // Return final size of the panel
    return new Size(300, 300);
}

// Calculate point origin of the Block you are in
protected Point GetOrigin(int blockNum, int blocksPerRow, Size itemSize)
{
    // Get row number (zero-based)
    int row = (int)Math.Floor(blockNum / blocksPerRow);

    // Get column number (zero-based)
    int column = blockNum - blocksPerRow * row;

    // Calculate origin
    Point origin = new Point(itemSize.Width * column, itemSize.Height * row);
    return origin;

}


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft