TOC

This article is currently in the process of being translated into Japanese (~90% done).

Panels:

The StackPanel control

スタックパネルはラップパネルと大変良く似ていますが、少なくとも一つ大きな違いがあります。スタックパネルはコンテンツを折り返さずに一つの方向に引き伸ばして、要素の上に要素を積み重ねます。ラップパネルとよく似た動作をする最初の簡単な例を試してみましょう。

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel>
		<Button>Button 1</Button>
		<Button>Button 2</Button>
		<Button>Button 3</Button>
		<Button>Button 4</Button>
		<Button>Button 5</Button>
		<Button>Button 6</Button>
	</StackPanel>
</Window>

最初に注意すべきことは、スタックパネルはコンテンツに十分なスペースが有るかどうかを関知しないことです。コンテンツは折り返さないし、自動的にスクロールできるようにもなりません(このためにScrollViewer コントロールを使うことは出来ますが - これは後の章で論じます)。

スタックパネルのデフォルトの並びは垂直ということも気づくと思います。デフォルトの並びが水平のラップパネルと異なります。しかし、ラップパネルと同じ様に Orientation プロパティを使って簡単に変更できます。

<StackPanel Orientation="Horizontal">

スタックパネルはデフォルトで子コントロールを引き伸ばすということにも気付くでしょう。垂直整列のスタックパネルでは、最初の例のように全てのコントロールは水平に引き伸ばされます。水平整列のスタックパネルでは、上のように全ての子コントロールは垂直に引き伸ばされます。スタックパネルは HorizontalAlignment または VerticalAlignment プロパティで子コントロールの引き伸ばしを実行しますが、もし必要なら簡単に変更できます。次の例を見て下さい。これは以前の例と同じマークアップを使っていますが、今回は全ての子コントロールの VerticalAlignment プロパティに値を割り当てています。

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel Orientation="Horizontal">
		<Button VerticalAlignment="Top">Button 1</Button>
		<Button VerticalAlignment="Center">Button 2</Button>
		<Button VerticalAlignment="Bottom">Button 3</Button>
		<Button VerticalAlignment="Bottom">Button 4</Button>
		<Button VerticalAlignment="Center">Button 5</Button>
		<Button VerticalAlignment="Top">Button 6</Button>
	</StackPanel>
</Window>

Top, Center と Bottom を使って、ボタンを蹴ったような位置に置いています。もちろん縦配列のスタックパネルでも、子コントロールの HorizontalAlignment を使って同じことが出来ます。

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel Orientation="Vertical">
		<Button HorizontalAlignment="Left">Button 1</Button>
		<Button HorizontalAlignment="Center">Button 2</Button>
		<Button HorizontalAlignment="Right">Button 3</Button>
		<Button HorizontalAlignment="Right">Button 4</Button>
		<Button HorizontalAlignment="Center">Button 5</Button>
		<Button HorizontalAlignment="Left">Button 6</Button>
	</StackPanel>
</Window>

コントロールは依然として上から下へ並んでいますが、それぞれのコントロールは同じ長さにはならず、左、中央、右に並んでいます。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!