情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.ArrangeOverride メソッド

更新 : 2007 年 11 月

派生クラスでオーバーライドされると、子要素を配置し、FrameworkElement 派生クラスのサイズを決定します。

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

protected virtual Size ArrangeOverride(
	Size finalSize
)
protected Size ArrangeOverride(
	Size finalSize
)
protected function ArrangeOverride(
	finalSize : Size
) : Size
メソッドは XAML では使用できません。

パラメータ

finalSize
型 : System.Windows.Size

この要素が要素自体と子を配置するために使用する親の末尾の領域。

戻り値

型 : System.Windows.Size

使用する実際のサイズ。

継承元へのメモ :

レイアウト処理の配置パスをカスタマイズするコントロール作成者は、このメソッドをオーバーライドする必要があります。実装パターンでは、表示可能な各子要素の Arrange を呼び出して、各子要素の最終的な必要サイズを finalRect パラメータとして渡します。親要素では、各子要素の Arrange を呼び出す必要があります。呼び出さないと子要素は描画されません。

多くの派生クラスがこのメソッドの実装を提供しています。Window.ArrangeOverridePage.ArrangeOverrideControl.ArrangeOverride などがその代表的な例です。

この例では、Panel 要素の既定のレイアウト動作をオーバーライドして、Panel から派生したカスタム レイアウト要素を作成する方法を示します。

この例では、PlotPanel という単純なカスタム Panel 要素を定義します。この要素は、ハードコーディングされた x 座標および y 座標に従って子要素を配置します。この例では、x および y をどちらも 50 に設定します。そのため、すべての子要素は x 座標および y 座標上のこの位置に配置されます。

カスタムの Panel 動作を実装するために、この例では MeasureOverride メソッドと ArrangeOverride メソッドを使用します。各メソッドは、子要素の配置とレンダリングに必要な Size データを返します。

public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


サンプル全体については、「簡単なカスタム パネルの作成のサンプル」を参照してください。

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0

コミュニティの追加

表示:
© 2015 Microsoft