WPF 入門

ホーム > WPF の基本 > XAML を利用する WPFプログラムを C# コンパイラだけでビルドする

XAML を利用する WPFプログラムを C# コンパイラだけでビルドする

前回は原始的な WPF プログラムを C# コンパイラでビルドしました。

それによって、WPF プログラムの基本要素である System.Windows.Application や System.Windows.Window (からの派生クラス) を使うことはできました。

しかしやはり WPF では XAML を用いて UI のレイアウトをできることも目玉の一つですから、それも使ってみましょう。

実はこの辺から既に C# コンパイラひとつで作ることが難しくなってきてしまいます・・・。

Window を XAML で定義

次の内容を MainWindow.xaml として保存します。

<Window
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	Title="Hello, WPF!">
</Window>

ここでは Window 要素がルートになっています。定義しているのは名前空間の他は、ウィンドウのタイトルのみです。ウィンドウのタイトルを "Hello, WPF!" としています。

XamlReader で XAML を読み込む

プログラムのコードは、次のとおり。これを main.cs とします。

using System;
using System.IO;
using System.Windows;
using System.Windows.Markup;

namespace TestApp {
	public class App1 {
		[STAThread]
		public static void Main() {
			Application app = new Application();
			Window window = null;
			using( FileStream fs = new FileStream(
					"mainwindow.xaml", FileMode.Open, FileAccess.Read) ){
				window = (Window) XamlReader.Load(fs);
			}
			window.Show();
			app.Run(window);
		}
	}
}

.NET Framework の標準の FileStream (System.IO) で XAML ファイルを開き、それを XamlReader でロードしています。

XamlReader の Load メソッドの戻り値として Window が返ります。返された Window オブジェクトを Application の Run メソッドに渡しています。

ビルド方法は前回と同様です。

SET REFPATH=C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0
csc /t:winexe /r:"%REFPATH%\PresentationCore.dll" 
/r:"%REFPATH%\PresentationFramework.dll" /r:"%REFPATH%\WindowsBase.dll" 
main.cs

この結果生成された main.exe を起動すると次のようなウィンドウが表示されました。

WPF プログラムの作成

確かにウィンドウのタイトルに、XAML で指定した文字列 "Hello, WPF!" が見え、XAML が読み込まれたことがわかりますね。

ホーム > WPF の基本 > XAML を利用する WPFプログラムを C# コンパイラだけでビルドする