「空のプロジェクト」からWPFアプリケーションを作成する方法は、WPFで、xamlやデザイナーを使わずにUIを作成する際や作成方法を説明する際に使用すると便利です。
Visual Studio 2019 Communityでは、Visual Studio 2017 Communityとは若干メニューのデザインが異なっていますが、行うことは同じです。
最小のWPFアプリケーションを作成する
「新しいプロジェクトの作成」を選択し、新しいプロジェクトを作成します。

「空のプロジェクト(.Net Famework)」を選択します。

プロジェクトの名前と保存場所を指定し、新しいプロジェクトを構成します。


右側のソリューション・エクスプローラの「参照」の項目で、右クリックし、「参照の追加」を選択します。
アセンプリを選択し、参照を追加します。追加する参照は、以下の4つです。
- PresentationCore
- PresentationFramework
- System
- WindowsBase


追加された参照は、ソリューション・エクスプローラーの「参照」の項目で確認できます。
クラスを追加します。
クラスを追加するには、ソリューションエクスプローラーで、プロジェクト名を選択した後、ショートカットキー Shift + Alt + Cを使用するか、ソリューション・エクスプローラー上のプロジェクトで、右クリックし、「追加」、「クラス」を選択します。

名前を指定して、クラスを追加します。

作成したクラスにコードを入力します。
// 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");
}
}
}

プロジェクトから、プロパティを選択します。

メニューからだけでなく、ソリューションエクスプローラーからも、プロパティを選択できます。

出力の種類に、コンソールアプリケーションが表示されていると、コンソール出力が行われ、Windowsアプリケーションが選択されていると、コンソール出力は行われません。
プロクラム開発時に、コンソール出力を行うと、プログラムの進行をコンソールに表示するしたり、無限ループに入ったときに、コンソールウィンドウで、Ctrl+Cを入力することで、アプリケーションの実行を中断することができるなど、有効に活用することができます。ただ、アプリケーションが完成した際に、コンソール出力を行わない状態に変更してから、配布するように注意しましょう。

ディバッグ・メニューからディバッグなしで開始を選択し(あるいは、Ctrl + F5を押す)、プログラムをコンパイルして実行します。

プロパティで出力の種類を「Windowsアプリケーション」に変更しておかないと、コンソールにメッセージが表示されます。何かキーを押すとアプリケーションが終了します。
プログラム実行時に、コンソールウィンドウを表示したくない場合は、プロパティで出力の種類を「Windowsアプリケーション」に変更しておく必要があります。

アプリケーションを実行すると、ダイアログボックが表示されます。OKをクリックします。
