TOC

This article has been localized into Japanese by the community.

WPFアプリケーション:

App.xamlでの作業

App.xamlはアプリケーションの宣言的な開始点です。Visual Studioは新しいWPFアプリケーションの開始時に自動的に作成して、それにはApp.xaml.csというコードビハインドファイルも含まれます。これらはウインドウとよく似た働きをします。つまり、この二つのファイルはパーシャルクラスで、マークアップ(XAML)とコードビハインドのように協調して動作します。

App.xaml.csはWPF Windowsアプリケーションの中心的なクラスのApplicationクラスを拡張します。.NETはこのクラスで指示を開始し目的のWindowやPageをここから開始します。また、これはアプリケーション開始やハンドルされていない例外等の重要なアプリケーションイベントをサブスクライブする場所でもあります。後ほど更に議論します。

App.xamlの最も一般的に使われている機能の一つは、例えばグローバルスタイルのようなアプリケーション全体から使われアクセスされるグローバルリソースの定義です。これについては詳細を後ほど議論します。

App.xamlの構造

新しいアプリケーションを作成するとき、自動的に作成されるApp.xamlは以下のようなものです:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

ここで注目すべきはStartupUriプロパティです。これは、実質的に、アプリケーションが実行されるときどのWindowやPageを開始するか指示する部分です。この場合、MainWindow.xamlが開始されますが、もし別のウィンドウで始めたいなら、単にここを変えるだけでOKです。

最初のウインドウをいつ、どのように表示するか、もっとコントロールしたい状況も有ると思いますが、そういう場合はStartupUriプロパティとその値を削除し、代わりにコードビハインドで行うことが出来ます。これを以下に示します。

App.xaml.csの構造

新しいプロイジェクトに適合するApp.xaml.csは普通このようになります:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

どのようにApplicationクラスを拡張し、アプリケーションレベルで操作できるかがわかります。例えば、Startupイベントをサブスクライブして手動で開始ウインドウを作成できます。

例です:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

どのようにStartupUriがStartupイベントのサブスクリプションに置き換えられたのかに注意してください(XMALを介したサブスクライブについては他の章で説明されます)。コードビハインドでイベントをこのように使います:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			// Create the startup window
			MainWindow wnd = new MainWindow();
			// Do stuff here, e.g. to the window
			wnd.Title = "Something else";
			// Show the window
			wnd.Show();
		}
	}
}

この例のすごい点は、StartupUriプロパティを使うだけの場合と比べてスタートアップウィンドウが表示される前に操作できることです。この中ではウィンドウのタイトルを変えています。これはほとんど使えませんが、イベントをサブスクライブしたり、スプラッシュスクリーンの表示をしたりも出来ます。全てのコントロールが使える場合、大きな可能性があります。これらの事項についてこのチュートリアルの次の章でより深く見ていきます。