libro
www.tuyano.com
初心者のためのWindows Phoneプログラミング入門

さまざまなコントロールの利用 (6/6)

作成:2011-10-03 08:10
更新:2011-10-03 08:10

■ScrollViewerとStackPanel

その他の部品として、「部品類のレイアウトに関するもの」を2つ紹介しておきましょう。それは「ScrollViewer」と「StackPanel」です。

ScrollViewerについて
ScrollViewerは、スクロール機能を提供するコンテナです。これはそのままツールボックスからデザイン画面に配置し、更にこの中にスクロール表示させるコントロールを入れるだけです。ScrollViewerの中に入っているコントロールが、ScrollViewerよりも大きなサイズになると、自動的にスクロール表示するようになります。スクロールバーの利用は以下のプロパティで設定します。

HorizontalScrollBarVisibility――水平方向のスクロール(つまり横スクロール)機能に関するものです。
VerticalScrollBarVisibility――垂直方向スクロール(つまり縦スクロール)機能に関するものです。

それぞれ、「Disabled」「Auto」「Hidden」「Visible」といった値が用意されています。スクロール機能を使用しない場合はDisableに、そうでない場合は他のいずれかにします。Autoにすると必要に応じて自動的にスクロールバーが現れます。常時表示させたければVisibleを、表示させたくなければHiddenをそれぞれ選びます。

今のところ、ScrollViewerには、スクロール時のイベント処理などの機能はありません。まぁ、独自にイベントを登録し処理することは不可能ではないと思いますが、今は「スクロール時に何かを処理させることはできない」と考えておきましょう。

StackPanelについて
StackPanelは、複数のコントロールを縦または横に整列配置させるためのものです。ツールボックスから配置し、更にその中に部品を追加していくと、それらがきれいに縦に並べられます。入りの方向は「Orientation」で指定できます。これは以下のいずれかの値を指定します。

Vertical――垂直に(つまり縦に)部品を並べます。
Horizontal――水平に(つまり横に)部品を並べます。

この種の部品は、横方向に並べた場合、表示しきれないと改行して並べることが多いのですが、StackPanelではそうはしません。あくまで無理やり横に並べます。

このStackPanelも、特に独自のイベントなどはありません。基本的にプログラムから操作することの少ないコンテナでしょう。ただ、ダイナミックに部品を追加するような場合はあるかも知れません。

StackPanelでは(その他のコンテナも同様ですが)、自身の中に組み込まれている部品類を「Children」というプロパティに管理しています。これはUIElement.Collectionというコレクションクラスで値を保持しており、このメソッドを使ってコントロールを追加すれば、StackPanelの中に新たにコントロールが追加されます。

下に簡単な例を挙げておきます。TextBlockを作成し、stackPanel1というStackPanelに追加する例です。Childrenの「Add」プロパティで、新たに部品を追加することができます。以下に追加・削除のためのメソッドを整理しておきましょう。

・引数のコントロールを追加する
【Collection】.Add(【UIElement】);

・引数のコントロールを取り除く
【Collection】.Remove(【UIElement】);

・インデックス番号を指定してコントロールを取り除く
【Collection】.RemoveAt(【ind】);

とりあえずこれらがわかれば、StackPanelに整列されるコントロールを操作できるようになるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

private void button1Click(object sender, RoutedEventArgs e)
{
	TextBlock bl = new TextBlock();
	bl.Text = "New text.";
	stackPanel1.Children.Add(bl);
}

※関連コンテンツ

「初心者のためのWindows Phoneプログラミング入門」に戻る