|
|
連載:XAMLの基礎知識
第2回 XAMLとWPFの関係
デジタルアドバンテージ 遠藤 孝信
2008/02/15 |
|
|
アプリケーション定義をC#/VBで記述
ここまできたら、最後はapp.xamlもC#/VBで書き直して、すべてをC#/VBにしてみましょう。
WPFであってもアプリケーションのスタート・ポイントは静的メソッドであるMainメソッドです。Mainメソッドでは、Applicationクラス(実際には、その子クラス)のインスタンス化を行い、Runメソッドを呼び出してアプリケーションを開始します。先ほどのStartupイベント・ハンドラを記述したファイルに、このようなMainメソッドを追加します。これは次のようになります。
using System;
using System.Windows;
public class HelloWorldApp : Application {
[STAThread]
static void Main() {
HelloWorldApp app = new HelloWorldApp();
app.Startup += app.HelloWorldApp_Startup;
app.Run();
}
void HelloWorldApp_Startup(object sender, StartupEventArgs e)
{
HelloWorldWindow win = new HelloWorldWindow();
win.Show();
}
}
|
Imports System
Imports System.Windows
Partial Public Class HelloWorldApp
Inherits Application
<STAThread> _
Shared Sub Main()
Dim app As New HelloWorldApp()
AddHandler app.Startup, AddressOf app.HelloWorldApp_Startup
app.Run()
End Sub
Sub HelloWorldApp_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
Dim win As New HelloWorldWindow()
win.Show()
End Sub
End Class
|
|
リスト11 app.xamlの内容をC#/VBで記述したコード(上:app.cs、下:app.vb) |
ここでも従来のWindowsフォームのMainメソッドと似た構造になっているのが分かります。WPFはまったく新しく設計されたWindowsアプリケーション用のフレームワークですが、従来のWindowsフォームからのスムーズな移行が行えるように、従来と似た構造が採用されているようです。
この時点でHelloWorld.exeを作成するのに必要なソース・ファイルは、リスト7(win.cs/win.vb)とリスト11(app.cs/app.vb)だけになりました。これだけであればもはやプロジェクト・ファイルを使わずとも、次のようなコマンドによりコマンドラインからのコンパイルも可能です。
csc.exe /out:HelloWorld.exe /target:winexe /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationframework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\windowsbase.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationcore.dll" app.cs win.cs
|
vbc.exe /out:HelloWorld.exe /target:winexe /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationframework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\windowsbase.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationcore.dll" app.vb win.vb
|
|
リスト7とリスト11からHelloWorld.exeを作成するコマンド(上:C#の場合、下:VBの場合) |
コンパイラであるcsc.exeやvbc.exeはMSBuild.exeと同じディレクトリに格納されています。ここでは/referenceオプションにより、WPFアプリケーションに必要な3つのアセンブリを参照しています。
ちなみに上記のリスト11は若干冗長になっています。これは次のリスト12のように書き換えても同じです。
using System;
using System.Windows;
public class HelloWorldApp : Application {
[STAThread]
static void Main() {
HelloWorldApp app = new HelloWorldApp();
app.Run(new HelloWorldWindow());
}
}
|
Imports System
Imports System.Windows
Partial Public Class HelloWorldApp
Inherits Application
<STAThread> _
Shared Sub Main()
Dim app As New HelloWorldApp()
app.Run(New HelloWorldWindow())
End Sub
End Class
|
|
リスト12 app.xamlの内容をC#/VBで記述したコード(上:app.cs、下:app.vb) |
■
今回はXAMLで記述されていたHelloWorldプログラムを、徐々にC#/VBで書き換えていきました。これによりXAMLとWPFの関係が少しは見えたでしょうか。XAMLはこれまでなかったスタイルでアプリケーションを記述するため、なかなか取っつきにくいところもありますが、対応するWPFのクラスを確認しながら学習を進めれば理解も深まると思います。
さて若干遠回りした感もありますが、次回からはXAMLの記述方法を解説していく予定です。
Insider.NET 記事ランキング
本日
月間