Home > C# > WPF > 最小のWPFアプリケーション

Visual Studioで、最小のWPFアプリケーションを作成する

新規作成日 2018-10-02
最終更新日

WPFの解説書やインターネット上のドキュメントで、最小のWPFアプリケーションというものが存在します。

// MyApp.cs
using System;
using System.Windows; // the root WPF namespace ルートのWPF名前空間

namespace MyFirstWpfApp
{
	class MyApp
	{
	   [STAThread] 
	   static void Main() 
	   { 
		// the WPF message box WPFのメッセージボックス
		MessageBox.Show("Hello, WPF"); 
		}
	}
}

[Cbris Sells, Ian Griffitbs]Programming WPFより

類似のコードを良く見かけるので、おそらく有名なコードと思われるのですが、このコードをどうやって実行したら良いのか、わたしは、ずっとわかりませんでした。

最近、その実行方法について、説明がある書籍を見つけました。

[Charles Petzold]APPLICATIONS=CODE+MARKUP

その書籍内の説明を元にこのプログラムを実行して見ようと思います。

C#の不可解なライブラリの参照

C#で、書籍やmsdnなどインターネット上のサンプルコードを実行しようとすると、実行できないことがあります。C#の知識が技能が十分でなければ、実行できない原因の対処ができないため、そのサンプルコードの実行や理解を諦めるしかありません。

ソリューションエクスプローラーの参照

その原因の多くは、C#のライブラリ参照にあると思います。C#で利用するライブラリは、usingディレクティブで指定します。しかし、それだけでは、使えない場合があります。使えない場合は、ソリューションエクスプローラーの参照から、参照を追加する必要があります。

アセンプリを選択肢、参照を追加します。追加する参照は、以下の4つです。

  • PresentationCore
  • PresentationFramework
  • System
  • WindowsBase

※.Net Frameworkの3.0と3.5の間で、一部のスラス定義が、「System.Xaml」に分離されたようなので、古いサンプルプログラムで動作しないものがあれば、「System.Xaml」を追加してみましょう。

参考までに、WPFアプリケーション・テンプレートのプロジェクト参照は、以下のとおりです。

  • Microsoft.CSharp
  • PresentationCore
  • PresentationFramework
  • System
  • System.Core
  • System.Data
  • System.Data.DataSetExtensions
  • System.Net.Http
  • System.Xaml
  • System.Xml
  • System.Xml.Linq
  • WindowsBase

追加する参照が一覧に存在しなければ、Nugetライブラリから、使用するライブラリやツールキットをインストールする必要があります。インストールして、参照の一覧に追加された参照は、はじめから一覧にあったのか、何らかのライブラリやツールキットをインストールする事で使えるようになったのかを簡単に判断する方法はありません。

その問題を回避する仕組みが、プロジェクト・テンプレートです。プロジェクト・テンプレートごとに、必要な参照が追加された状態で利用できます。

しかし、サンプルコードには、どのプロジェクト・テンプレートを使って作成したのか、どの参照を使ったのか、追加のライブラリやツールキットのインストールが必要なのかの情報は、ほとんど併記されていません。サンプルコードを作成した人もそれを簡単に確認する方法がありません。

MSDNから、クラスの説明を調べたとき、アセンプリに指定された内容が、プロジェクト参照に追加する必要がある項目です。

アセンブリ参照に追加する項目

WPFでは、xaml表記を使わずに、C#コードで、UIを作成することができます。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」