Visual Studio 2008 beta2のデザイナがしょぼいということで、いきなりやる気が削がれたWPFを触りだしてみようと思う。
デザイナがしょぼいので、とりあえずxaml形式のファイルは少しの間お預け。
C#だけで、簡単なのを組んでみようと思う。
WPFアプリケーションを「HelloWPF」という名前で新規作成する。
xamlファイルが2つ程作られてるけど、それはさくっと消してまっさらな状態にする。
クラスの新規作成から、「HelloWPFApplication」というクラスを作って下のような内容にする。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace HelloWPF
{
class HelloWPFApplication : Application
{
[STAThread]
static void Main(string[] args)
{
new HelloWPFApplication().Run();
}
public HelloWPFApplication()
{
this.Startup += new StartupEventHandler(HelloWPFApplication_Startup);
}
void HelloWPFApplication_Startup(object sender, StartupEventArgs e)
{
Window myWindow = new Window();
myWindow.Title = "こんにちはWPF";
myWindow.Height = 225;
myWindow.Width = 250;
myWindow.Show();
}
}
}
WPFのアプリケーションは、System.Windows.Applicationを継承して作る。
ApplicationのRunを呼ぶと色々裏でやってくれる手はずになってる。
Applicationクラスには、Startupというイベントがあって、Runを呼ぶと起きるイベントになってるみたい。
そこで、メインウィンドウを表示する。
ウィンドウは、System.Windows.Windowクラスを使う。
プロパティを色々設定したあとShowメソッドで表示をする。
実行結果は↓みたいになる。
見ての通り、何も面白くないけどちゃんと動いた!!
千里の道も一歩から。
ちょっと欲張って二歩目にいくよ。ボタン置いてクリックしたらウィンドウのタイトルを「こんばんはWPF」にしてみようと思う。
ボタンとかを置くには、Windows#AddChildメソッドで追加すればいいらしいがprotectedメソッドなので外からは呼べないチック。
なので、新規にMyWindowという名前のクラスを作って下のような内容にしてみた。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
namespace HelloWPF
{
class MyWindow : Window
{
private Button button;
public MyWindow()
{
InitializeComponents();
}
private void InitializeComponents()
{
this.Title = "こんにちはWPF";
this.Height = 225;
this.Width = 250;
button = new Button();
button.Content = "クリック!";
button.Click += new RoutedEventHandler(button_Click);
this.AddChild(button);
}
void button_Click(object sender, RoutedEventArgs e)
{
this.Title = "今は夜ですよ?";
}
}
}
System.Windows.Windowを継承して、ボタンを置いている。
ボタンは、System.Windows.Controls.Buttonっていうクラスを使う。ボタンのクリックイベントでWindowのタイトルを「今は夜ですよ?」に変えてる。
んで、「HelloWPFApplication」クラスのStartupイベントを↓のように書き換えた。
void HelloWPFApplication_Startup(object sender, StartupEventArgs e)
{
Window myWindow = new MyWindow();
myWindow.Show();
}
F5を押して実行すると下のようになる。ちゃんと自己主張の強すぎるボタンがあって、押すとタイトルが変わる。
クリックすると…
とりあえずハローワールド的なところが終了。
先は長い。