本文へスキップ
BecomeCoder

C# WPFコース · 第1章 WPF ― デスクトップアプリ開発 · レッスン1

WPFとは ― XAMLの構成

ブラウザで完結

導入

WPF(Windows Presentation Foundation)は、C#でWindowsのデスクトップアプリ(画面付きアプリ)を作る定番フレームワークです。画面の見た目はXAMLというXMLベースの言語で記述します。まずはXAMLの構造と、画面を並べる「レイアウトパネル」を理解しましょう。

図解

flowchart TB
    W["Window(画面の枠)"] --> G["Grid / StackPanel(配置の器)"]
    G --> B["Button"]
    G --> T["TextBox"]
    G --> L["TextBlock(ラベル)"]
    style W fill:#e1f5fe

XAMLサンプル(読み物)

<!-- MainWindow.xaml ― 画面の見た目をXML風に記述する -->
<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Title="はじめてのWPF" Height="200" Width="300">

    <!-- StackPanel: 子要素を縦(または横)に順番に並べる器 -->
    <StackPanel Margin="20">
        <TextBlock Text="こんにちは、WPF!" FontSize="18" />
        <TextBox x:Name="nameBox" Margin="0,10" />
        <Button Content="送信" Width="80" />
    </StackPanel>
</Window>
  • 画面は<Window>が枠。中にレイアウトパネルGrid/StackPanel)を置き、その中にコントロールを並べる
  • <StackPanel>は子を縦横に順に並べる、<Grid>は行・列のマス目に配置する(複雑な画面向き)
  • 属性(Title/Width/FontSizeなど)で見た目を指定する
  • x:Nameを付けるとC#コード(コードビハインド)からその部品を操作できる

詳細手順

  1. Visual Studioで 新しいプロジェクト → WPF アプリケーション(C#) を作成する(またはスターター129-wpf-xaml/starter.zipを開く)
Visual Studioの新規プロジェクト作成でWPFアプリケーションを選択する画面
新規プロジェクトで「WPF アプリケーション」を選択
  1. MainWindow.xamlを開くと、上にデザイナー(プレビュー)、下にXAMLのコードが表示される。XAMLを編集するとプレビューが即座に変わることを確認する
MainWindow.xamlのデザイナープレビューとXAMLコードが上下に表示された画面
XAMLエディタ(上:デザイナープレビュー / 下:XAML)
  1. 上のサンプルのようにStackPanelとコントロールを配置し、F5で実行して画面が表示されることを確認する

まとめ

  • WPFはC#でWindowsデスクトップアプリを作るフレームワーク
  • 画面の見た目はXAML(XMLベース)で書く
  • Windowの中にGrid/StackPanelを置き、コントロールを並べる

次回: ここから代表的なコントロールを1つずつ。まずは操作の起点Buttonです。

テンプレート構成(教材制作用メモ)

129-wpf-xaml/
└── starter.zip   # WPFアプリの雛形 / MainWindow.xaml(StackPanel例)/ README(スクショ位置)

実際に動かしてみよう

下のエディタに XAML を書くと、右側のプレビューにその場で WPF 風のUIが描画されます。テキスト入力・チェック・選択はそのまま動き、`{Binding}` で結んだ TextBox と TextBlock は打った文字がリアルタイムで反映されます。本文の XAML を打ち込んだり、属性(Width・Margin・FontSize・色など)を書き換えたりして、レイアウトの変化を確かめながら進めましょう(C# のコードビハインドや Command、ItemsSource などC#側のデータに依存する処理は実行されません。それらは Visual Studio で試します)。

XAML (WPF) プレビュー

書いた XAML をその場で WPF 風の画面に描画する学習用プレビューを読み込みます(本物のWPFではなく、レイアウトとコントロールの見た目・{Binding}の双方向バインディングを再現したものです。C#のコードビハインド/Command は実行されません)。
スクロールして表示された時点でも自動で読み込まれます。