XAMLDo-It-Yourself 第 2 回. レゕウト 今回は XAML でウゖンドウにパネルやボタン メニューなどの基本的なコントロールを配置する方法を 学びます ここでは 次のことを学習します XAML におけるレゕウトの基本 主要なパネルとその記述方法 XAML (WPF) で利用可能な

Similar documents
XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

PowerPoint プレゼンテーション

WPFの初歩の初歩

Visual Studio Do-It-Yourself 第 3 回コントロール 今回は Windows ゕプリケーションのユーザーンターフェスを作成する際に使う基本的なコントロ ールについて学びます ここでは 次のことを学習します 主要なコントロールとその機能 XAML を使ったコントロールの配置

グラフィックス 目次

XAML Do-It-Yourself シリーズ 第 1 回 XAML 概要 -1-

XAML Do-It-Yourself シリーズ 第 8 回ゕニメーション -1-


Sparkline for WPF

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

子ボックスや孫ボックスなどに position: absolute; と指定すると それぞれ親ボックスに対する絶対位置で配置できるので親ボックスの上に複数の子ボックスや孫ボックスを重ねて配置することができます トランジションやアニメーションを作成するときに非常に便利なので覚えておきましょう top

WPF アプリケーションの 多言語切替

Visual Studio Do-It-Yourself シリーズ 第 11 回テーマとスキン

Microsoft Word - 平成サロン09年2月21日一筆箋作成.doc

Prog2_4th

PowerPoint プレゼンテーション

Visual Studio 2010 Ready Day ブレークアウトセッション概要

200_CAD(画面回りの機能)の基本操作

グラフィックス 目次

.NET_3.5 Technical Briefing ソースコード説明 担当者の Demo 実施時の環境 注意 Visual Studio 2008β2 日本語版および Microsoft Silverlight Tools Alpha for Visual Studio 2008 Beta 2

3. 文字の入力 文字 ボタンをクリックします 文字入力したい範囲をドラックし 文字枠を作成します 文字を入力します この作業を繰り返します マウスポインタの形 4. 文字枠のサイズ変更 拡大 ボタンをクリックします 大きさを変えたい文字枠をクリックします マウスポインタを文字枠の右下のハンドル (

PowerPoint プレゼンテーション

目次 1. デジタル押し花の作り方 3 2. デジタル押し花をきれいに仕上げる方法 まとめ 課題にチャレンジ 19 レッスン内容 デジタル押し花 マイクロソフト社のワープロソフト Word 2010( これ以降 Word と記述します ) の図ツールに搭載されている [ 背景

JavaScript 演習 2 1

Word 実技 実習 編 別冊-6 ページを このページに差し替えてください (*Word 2016では [ ページレイアウト ] タブは [ レイアウト ] タブと名称変更されました ) 1 頁 Word 2016 ( 課題 と ) W ワード ord 2016 の画面構成 [ フ

トリガーをわかり易くする方法

グラフィックス 目次

目次 更新履歴... 1 画面設計書の目的... 3 必要な内容... 3 画面一覧... 4 必要な内容... 4 画面遷移... 5 画面レイアウト... 6 入力パラメータ... 7 必要な内容... 7 項目定義... 8 必要な内容... 8 部品の種類... 9 ( 参考 ) 部品指定と

第6回 CSS入門(つづき)

フレーム ページの作り方 那須シニアネット三宅節雄 今回は那須シニアネットのホームページと同様に 1バナーとホームページのタイトルなどを入れた top.html 2スライドショーなど構成するページの名前の一覧から各ページへリンクさせた menu.html 3 取り敢えず表紙を飾った main.htm

目次 1. アニメーションの軌跡の概要と仕組み 3 2. パノラマ写真にアニメーションの軌跡を設定 まとめ 課題にチャレンジ 19 レッスン内容 アニメーションの軌跡の概要と仕組み アニメーションの軌跡とは スライドに配置したオブジェクト ( テキストや図形 画像など ) を

-24- Word 2016 操作手順 第 5 章ワープロ A 24 ページを このページに差し替えてください ( 6 透かしの設定 を変更 ) 1 頁 3. タブ 6 字 とリーダー ( 任意 ) の設定 ( ウ )~( オ ) は 図 2 を参考に正しいものを記述してください ( 図 2) タブ

グラフィックス 目次

本日の内容 OpenOffice.org のフォーム機能について コントロールを中心に解説 コントロールを生かしたサンプル OpenOffice.org で作成可能なフォーム 2

_責)Wordトレ1_斉木

やさしくPDFへ文字入力 v.2.0

目次 概要... 2 フォームレイアウトデザイナー機能の設定... 3 設定したフォームレイアウトデザイナーの確認...14 その他スタイルの設定...15 フォームレイアウトデザイナーをエクスポート...17 フォームレイアウトデザイナーをインポート...18 インポート時の制限事項...19 リ

Web プログラミング 1 HTML+CSS (3) (2 章 ) 2013/5/8( 水 ) 演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用で


RAYOUT

< F2D D E6A7464>

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

UMLプロファイル 機能ガイド

サンプル CSS OutlineAnimation.html の説明 HTML の記述 (OutlineAnimation.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中にテキストで Out

2004年度情報リテラシーⅢ

初めてのプログラミング

Chart3D for WPF/Silverlight

目次 1. アニメーションの仕組み 3 2. ワードアートでムービーのタイトルを作成 7 3. まとめ 課題にチャレンジ 19 [ アニメーション ] 機能 PowerPoint に搭載されている [ アニメーション ] 機能を使用すると 文字や図形にアニメーション ( さまざまな動きや

初めてのプログラミング

Web データ管理 HTML+CSS (3) (2 章 ) 2011/10/19( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/23

Border Width と記述します id 属性 div3 の div 要素を記述し 中にテキストで Border Radius と記述します id 属性 div4 の div 要素を記述し 中に span 要素を1つ記述しその中にテキストで Border All<br />(Color,Widt

Microsoft Word - データ保管サービス操作マニュアル(第二版).docx

PowerPoint2003基礎編

スライド 1

CONTENTS マニュアルの表記... S01-13_01 1.DataNature Smart 全体概要図... S01-13_11 2. 基本操作... S01-13_ Web レポートの表示... S01-13_ 画面構成... S01-13_ 集計表 /

Microsoft Word - editage_trackchange_word2007.doc

2 / 25 複数ソフトの組み合わせ テキストファイルを Excel で開く テキスト形式 (.txt) で保存したファイルを Excel で利用しましょう 第 14 講で保存した west.txt を Excel で開きます 1. Excel を起動します 2. [Office ボタ

vi 目次 画像のサイズ設定 画像の効果 画面の取り込みとトリミング Office の共通基本操作 図形 図形の挿入と削除 図形の編集 図形の背景色の透過 Office

FileExplorer for ASP.NET Web Forms

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.

立ち読みページ

<!DOCTYPE html> <html> <head> <title>clipanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="clipanime1.css"> </head> <

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

Autodesk Revit Building 基礎コース

産能大式フローチャート作成アドインマニュアル

Format text with styles

(Microsoft Word -

Microsoft Word IL3_1.doc

スタイルシートでデザインを整えよう

BarCode for WPF

Word2007 Windows7 1 パンジーを描こう 暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

P.5( ツール一覧 ) 変更 追加のあったツール 16 パペットワープツール ( 新機能 ) CC2018 より [ パペットワープツール ] が追加されました [ 自由変形ツール ] は [ パペットワープツール ] のアイコンを長押しして切り替えることができます アートワークを選択した状態で

「旅日記」


Microsoft Word - 教科書大1a第9週2013.docx

HOW DO I WebBrowser コントロールで HTML5 を 使用するには ここでは以下の手順で説明します Video 要素を使用する Silverlight と JavaScript の間でやり取りする Canvas 要素を使用する Video 要素を使用する 1. Visual Stu

Microsoft Word - VB.doc

Microsoft Word - 415Illustrator

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

Ⅴ ブラウザーの使い方 V. ブラウザーの使い方 起動 終了 画面説明 ホームページ移動 リンクを使って移動 アドレスバーからの移動 ボタンでの移動


20180308森の日県南支部 林

1.Wicrosoft Word2010 を起動 1 スタート ボタン スタートメニューの すべてのプログラム Microsoft Office Microsoft Word2010 と順にクリックします Microsoft Word2010 が起動します 2. ページ設定 余白 フォント フォント

IBM Business Process Manager CSS による Coach レイアウト制御ガイド WebSphere 2014 IBM Corporation

Taro-ホームページB5.jtd

スライド 1

1/2

Design with themes — Part 1: The Basics

padding( パディング ) padding プロパティでボックスの内側の余白を指定します この部分の内側には背景 ( 背景色や背景画像 ) を表示できます border( ボーダー ) border プロパティでボックスの境界線を指定します ボーダーには色 太さ 線の種類を指定できます 画像で

2 文字列と間隔 文字の横幅のみを変更 文書内の文字間隔は一定で ペー ジ設定 で設定するが 特定の文字 だけ変更する時に使用する 文字の書式には自動継続機能がありますので 書式を設定した次の文字にも同じ書式が設定されます Enter キーを押して 改行しても同様です その為 文字を入力した後で選択

V.ブラウザの使い方

( 注 )Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くこ

WPF アプリケーションの 多言語切替

2002年度情報リテラシーⅢ

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

Transcription:

XAML Do-It-Yourself シリーズ 第 2 回レゕウト -1-

XAMLDo-It-Yourself 第 2 回. レゕウト 今回は XAML でウゖンドウにパネルやボタン メニューなどの基本的なコントロールを配置する方法を 学びます ここでは 次のことを学習します XAML におけるレゕウトの基本 主要なパネルとその記述方法 XAML (WPF) で利用可能なコントロール 典型的なコントロールの記述方法 標準的なウゖンドウのレゕウト例 今回作成する XAML プログラム メニューコントロール ツールバーコントロール ステータスバーコントロール 今回は XAML のレゕウト機能を使っていくつかのコントロールを配置し 一般的な Windows ゕプリ ケーションのウゖンドウを作成します このウゖンドウの内部には メニューやツールバー ステータス バーの各コントロールが配置されています レイアウトの基本 XAML を用いた WPF ゕプリケーションにおけるボタンやテキストボックスといったコントロールの配 置は これまでの Windows フォームゕプリケーションのそれとはやや異なります 一言でいえば こ -2-

れまでの Windows フォームゕプリケーションでの手法に ASP.NET (HTML) でのコントロールの配置 方法がミックスされています また 前回説明したように XAML でのコントロールの記述は階層的に行います ルート要素である <Window> 要素の下に必要なコントロールを記述してユーザーンターフェスを構築していきますが ルート要素配下に配置できる要素は 1 つだけという決まりがあります そのためルート要素には後述する Grid や StackPanel といったパネルを記述し パネルの中にさらに必要なコントロールを記述していきます パネル内には複数の要素 ( コントロール ) を配置できます デバイス独立ピクセルまた WPF では 座標の位置を記述する際のデフォルトの単位はピクセル値 (px) です ピクセルのほかに ンチ (inch) センチメートル (cm) ポント (pt 1pt = 96 / 72px) が使用できます WPF のピクセル値は 特定のデバスに依存しない デバス独立ピクセル 値です 具体的には WPF のピクセルは 96 DPI (Dot Per Pixel 96 DPI は 1 ンチに 96 個の点が描画できるということ ) を基準にしており デゖスプレの設定が 96 DPI でない場合は 96 DPI で表示する場合と同じ大きさに表示されるように 自動的にスケール処理されます このため 表示するデバスの解像度 (DPI) によらず 表示結果が同じサズになります パネルの種類と違い いま述べたように パネルはコントロールを配置するうえで重要な役割を果たします 以下に XAML で 利用できるパネルについて 主要なものを紹介します Canvas Canvas は最も単純なパネルです Canvas の子要素として配置するコントロールの位置は 子要素内で Canvas.Top と Canvas.Left といった属性を使って指定します <Canvas> <Button Canvas.Left="20" Canvas.Top="30" Width="100" Height="40" >Hello</Button> </Canvas> StackPanel StackPanel は子要素を縦または横に並べて表示します 並べる方向は Orientation 属性で指定します <Window x:class="wpfapplication2.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" -3-

Title="StackPanel" Height="200" Width="300"> <Grid> <!-- StackPanel を縦に並べる --> <StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top"> <Label>-- Vertical --</Label> <StackPanel Orientation="Vertical"> <Button>V Button #1</Button> <Button>V Button #2</Button> <Button>V Button #3</Button> </StackPanel> <Label>-- Horizontal --</Label> <StackPanel Orientation="Horizontal"> <Button>H Button #1</Button> <Button>H Button #2</Button> <Button>H Button #3</Button> </StackPanel> </StackPanel> </Grid> </Window> リスト 2-1 StackPanel の例 実行すると ウゖンドウは次のようになります WrapPanel WrapPanel は左上から右方向に順番にコントロールを表示します 領域内に表示しきれないコントロールは自動的に改行され 次の行に表示されます 従って WrapPanel では ウゖンドウのサズ変更に応じてコントロールの表示位置が変化します <Window x:class="_02wpfapplication.window4" -4-

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window4" Height="300" Width="200"> <Grid> <WrapPanel> <Button Width="80" >Wrap Button #1</Button> <Button Width="80" >Wrap Button #2</Button> <Button Width="80" >Wrap Button #3</Button> <Button Width="80" >Wrap Button #4</Button> <Button Width="80" >Wrap Button #5</Button> <Button Width="80" >Wrap Button #6</Button> <Button Width="80" >Wrap Button #7</Button> </WrapPanel> </Grid> </Window> リスト 2-2 WrapPanel の例 ウゖンドウの表示は次のようになります ここで ウゖンドウの横幅を少し広げてみます -5-

するとこのように ボタンの位置が自動的に変わります ウゖンドウサズをユーザーが自由に変更でき るようにした場合に ウゖンドウサズに応じてレゕウトを自動的に変化させたい場合に使用します DockPanel DockPanel は DockPanel の子要素が DockPanel の上下左右のいずれかにドッキングするパネルです 子要素では DockPanel.Doc 属性によりドッキングする位置を指定します <Window x:class="wpfapplication2.dockpanelwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DockPanel" Height="300" Width="300"> <DockPanel> <TextBlock DockPanel.Dock="Top" Height="40" Background="Lightgray"> Top Area ( メニュー ) </TextBlock> <TextBlock DockPanel.Dock="Bottom" Height="30" Background="LightGray"> Bottom Area ( ステータスバー ) </TextBlock> <TextBlock DockPanel.Dock="Left" Width="120" Background="Yellow"> Left Area ( ツリー ) </TextBlock> <TextBlock DockPanel.Dock="Left" Background="Pink"> Right Area( リスト ) </TextBlock> </DockPanel> </Window> リスト 2-3 DockPanel の例 ウゖンドウの表示は次のようになります -6-

Web のコンテンツページでは一般的な パネル型表示を行う場合に利用できます Grid Grid は子要素を表のように配置するパネルです Grid では Grid の行数と列数に合わせて 行と列の情報を事前に定義します 具体的には Grid.ColumnDefinitions で列情報を定義し Grid.RowDefinitions で行情報を定義します 行 列それぞれに幅と高さの指定が可能ですが 自動設定するときは "Auto" を ほかのセルが定義した部分を除くすべて を設定するときは "*" を指定します 次の例では 最初の列の幅を 100 ピクセルに定義し 2 番目の列の幅はウゖンドウ幅の残りすべてを使 うように定義しています また 先頭行の高さは 自動 でセットされるようにし 2 番目の行は 200 ピ クセルを確保するように定義しています <!-- 列の設定 --> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- 行の設定 --> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="200"/> </Grid.RowDefinitions> 行数と列数の定義を行った後 実際のセルの中身を記述します どのセルに対する記述なのかは -7-

Grid.Column と Grid.Row 属性で指定します 例えば 0 行 0 列目のセルを指定するなら次のようし ます Grid.Column="0" Grid.Row="0" 以下は Grid を利用して 2 行 2 列のセル領域を作成し 左上と右下のセルには Button を 右上と左 下のセルには TextBox をそれぞれ配置した例です <Window x:class="wpfapplication2.gridwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Grid" Height="300" Width="300"> <Grid ShowGridLines="True"> <!-- 桁の設定 --> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- 行の設定 --> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="200"/> </Grid.RowDefinitions> <!-- 各セル --> <Button Grid.Column="0" Grid.Row="0">Left Button</Button> <TextBox Grid.Column="1" Grid.Row="0" Background="Lightblue"> ボタンの右側 </TextBox> <TextBox Grid.Column="0" Grid.Row="1" Background="Lightblue"> ボタンの下 </TextBox> <Button Grid.Column="1" Grid.Row="1" Height="100"> 右下のボタン </Button> </Grid> </Window> リスト 2-4 Grid の例 ウゖンドウの表示は次のようになります -8-

コントロール パネルを用いたレゕウトの基本について説明しましたので 次にユーザーンターフェスの中心とな るコントロールについて説明します XAML (WPF) で利用できるコントロールの種類は Windows フォームで利用可能なコントロールとさほ ど変わりありません 主なコントロールを以下の表にまとめました コントロール名は XAML で記述する 要素名に対応しますから ここで示しているコントロール名を要素名として XAML で記述します コントロール名 Border Button CheckBox ComboBox DataGrid Image Label ListBox RadioButton TabControl GridSplitter GroupBox ListView MediaElement 機能別の要素の周囲に境界線 背景 またはその両方を描画しますボタンチェックボックスコンボボックスデータを表形式で表示する画像を描画します文字列を表示しますリストボックスラジオボタンタブ表示グリッドを分割してサズの変更を可能にしますグループボックスリストビューオーデゖオとビデオまたはそのいずれかを含むコントロールを表します -9-

Menu メニュー PasswordBox パスワード ( マスク ) 入力を行うテキストボックス ProgressBar プログレスバー Rectangle RichTextBox 矩形を描画します そのほかの 2D グラフゖックス描画として Ellipse ( だ円 ) Line ( 直線 ) Path ( 連続する直線と曲線 ) Polygon ( 多角形 ) Polyline ( 連続する直線 ) などがあります書式付きのテキスト入力ボックス ScrollBar スクロールバー Separator メニューなどの項目を区切るために使用します Slider スラダー StatusBar ステータスバー TextBox テキスト入力ボックス ToolBar ツールバー ToolBarTray ToolBar を配置するコンテナー TreeView ツリービュー WebBrowser ブラウザーのように HTML ドキュメントをホストする Windows フォームコントロールを WPF ページ上にホストで WindowsFormsHost きるようにします 表 2-1 XAML (WPF) で利用できる主なコントロール すでに Button や TextBox コントロールを使ったサンプルは紹介しました 以降では 典型的なコント ロールの記述例として ListBox Menu ToolBar を紹介します ListBox ( リスト ボックス ) ListBox では 一覧表示する項目を事前に用意しておく必要があります これらは <ListBoxItem> タグを使って記述します XAML では ListBox の項目に図形や画像を指定することも可能です 例えば次は 文字列の項目 項目 #1 と 項目#2 ビットマップの項目を含むリストボックスの例です <Window x:class="wpfapplication2.listboxwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ListBox" Height="300" Width="300"> <Grid> <ListBox Width="240" Height="150"> <ListBoxItem IsSelected="True"> 項目 #1</ListBoxItem> <ListBoxItem > 項目 #2</ListBoxItem> <ListBoxItem > <Image Width="200" Source="/WpfApplication2;component/Images/Penguins.jpg"/> </ListBoxItem> -10-

</ListBox> </Grid> </Window> 表示は次のようになります Menu ( メニュー ) メニューは <Menu> 要素と <MenuItem> 要素を使って記述します <MenuItem> 要素をネストす ることで 階層的なメニューを作ることも可能です なお 次のリストで示しているように ショートカットキーを示す文字は & ではなく _ ( ゕンダースコゕ ) になっています これは XML のルールでは "&" を & と記述する必要があるためで XAML では より簡単に記述できる _ に変更されています また メニュー項目の間に区切り線 ( セパレーター ) を入れたい場合は <Separator> 要素を記述します <Window x:class="wpfapplication2.menuwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MenuWindow" Height="300" Width="500"> <DockPanel> <Menu DockPanel.Dock="Top" Height="Auto"> <MenuItem Header=" フゔル (_F)"> <MenuItem Header=" さらにメニュー "> <MenuItem Header=" サブメニュー項目 #1"/> <MenuItem Header=" サブメニュー項目 #2"/> -11-

<Separator/> <MenuItem Header=" 終了 (_X)"/> <MenuItem Header=" 編集 (_E)"> <MenuItem Header=" コピー "/> <MenuItem Header=" ヘルプ (_H)"> <MenuItem Header=" について " /> </Menu> <Grid /> </DockPanel> </Window> 表示は次のようになります ToolBar ( ツールバー ) ツールバーは まず <ToolBarTray> 要素でツールバーの領域を確保しておき そこに <ToolBar> 要素を使って配置します 1 つの <ToolBar> 要素が 1 つのツールバーのまとまりを示します 次のリストは 2 つのツールバーを作成し 第 1 のツールバーには 2 つのボタンを 第 2 のツールバーにはボタンとテキストボックスをそれぞれ配置した例です <Window x:class="wpfapplication2.toolbarwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" -12-

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ToolBar" Height="300" Width="400"> <Grid> <ToolBarTray VerticalAlignment="Top"> <ToolBar Name="toolBar1" Band="0" BandIndex="0"> <Button>Toolbar Button1</Button> <Separator/> <Button>Toolbar Button2</Button> </ToolBar> <ToolBar Name="toolBar2" Band="0" BandIndex="1"> <Button>ToolBar Button3</Button> <Separator/> <TextBox Name="textBox1" Width="80" /> </ToolBar> </ToolBarTray> </Grid> </Window> 表示は次のようになります 標準的なウィンドウのレイアウト今回の総仕上げとして これまでに紹介したレゕウトやコントロールを使って メニューやツールバーを備えた一般的なウゖンドウ (Windows エクスプローラーのようなウゖンドウ ) を作成してみましょう 具体的には レゕウトとして Grid を使用し 内部にメニュー ツールバー ステータスバーを配置しています -13-

<Window x:class="wpfapplication2.layoutwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="LayoutSample" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <!-- Menu --> <RowDefinition Height="Auto"/> <!-- ToolBar --> <RowDefinition Height="*"/> <!-- Body --> <RowDefinition Height="Auto"/> <!-- StatusBar --> </Grid.RowDefinitions> <!-- メニュー --> <Menu Grid.Row="0"> <MenuItem Header=" フゔル (_F)"> <MenuItem Header=" さらにメニュー "> <MenuItem Header=" サブメニュー項目 #1"/> <MenuItem Header=" サブメニュー項目 #2"/> <Separator/> <MenuItem Header=" 終了 (_X)"/> <MenuItem Header=" 編集 (_E)"> <MenuItem Header=" コピー "/> <MenuItem Header=" ヘルプ (_H)"> <MenuItem Header=" について " /> </Menu> <!-- ツールバー --> <ToolBarTray Grid.Row="1" > <ToolBar Name="toolBar1" Band="0" BandIndex="0"> <Button>Toolbar Button1</Button> <Button>Toolbar Button2</Button> </ToolBar> <ToolBar Name="toolBar2" Band="0" BandIndex="1"> <Button>ToolBar Button3</Button> -14-

<Separator/> <TextBox Name="textBox1" Width="80" /> <Button>ToolBar Button4</Button> </ToolBar> </ToolBarTray> <WrapPanel Grid.Row="2" Margin="5,5,5,5" Background="LightGray"> <!-- 本体部分 --> <TextBlock > ここはウゖンドウの本体部分です </TextBlock> </WrapPanel> <!-- ステータスバー --> <StatusBar Grid.Row="3"> <Label> これはステータスバー </Label> </StatusBar> </Grid> </Window> リスト 2-5 標準的な Windows ゕプリケーションのレゕウト例 実行すると次のようなウゖンドウが表示されます もう 1 つ TreeView コントロールを配置したウゖンドウの例を紹介しましょう 基本的なレゕウト用 のパネルとして DockPanel を使用します TreeView の右側のペンにはエクスプローラーと同様 ListView を表示したいところですが ListView については データバンデゖング の回で説明しま -15-

す <Window x:class="wpfapplication2.newlayoutwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="LayoutSample" Height="350" Width="525"> <DockPanel> <!-- メニュー --> <Menu DockPanel.Dock="Top" > <MenuItem Header=" フゔル (_F)"> <MenuItem Header=" さらにメニュー "> <MenuItem Header=" サブメニュー項目 #1"/> <MenuItem Header=" サブメニュー項目 #2"/> <Separator/> <MenuItem Header=" 終了 (_X)"/> <MenuItem Header=" 編集 (_E)"> <MenuItem Header=" コピー "/> <MenuItem Header=" ヘルプ (_H)"> <MenuItem Header=" について " /> </Menu> <!-- ツールバー --> <ToolBarTray DockPanel.Dock="Top"> <ToolBar Name="toolBar1" Band="0" BandIndex="0"> <Button>Toolbar Button1</Button> <Separator/> <Button>Toolbar Button2</Button> </ToolBar> <ToolBar Name="toolBar2" Band="0" BandIndex="1"> <Button>ToolBar Button3</Button> <Separator/> <TextBox Name="textBox1" Width="80" /> <Button>ToolBar Button4</Button> </ToolBar> </ToolBarTray> <!-- ステータスバー --> <StatusBar DockPanel.Dock="Bottom"> <Label> これはステータスバー </Label> -16-

</StatusBar> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TreeView Grid.Column="0" > <TreeViewItem Header="node #1" IsExpanded="True"> <TreeViewItem Header="child node #2"/> <TreeViewItem Header="child node #3"/> </TreeViewItem> <TreeViewItem Header="node #2" IsExpanded="True"> <TreeViewItem Header="child node #2"/> <TreeViewItem Header="child node #3"/> </TreeViewItem> </TreeView> <GridSplitter Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Stretch" Background="Gray" ShowsPreview="True" Width="4" /> <!-- ListView はデータバンデゖングの回で --> <TextBox Grid.Column="2">ListView</TextBox> </Grid> </DockPanel> </Window> -------------------------------------------------------------------- リスト 2-6 Windows エクスプローラー風のウゖンドウ -------------------------------------------------------------------- 実行すると次のようなウゖンドウが表示されます -17-

まとめ今回は XAML で利用できるレゕウトと 代表的なコントロールについて学習しました XAML では パネルを用いることで ウゖンドウ上で絶対的な位置指定をしなくても 柔軟なレゕウトが実現できることがお分かりいただけたでしょう 次回は ボタンのクリックやメニュー選択といったコントロール操作に対応するロジックの記述 ( ベン ト処理 ) について紹介します -18-