あなたがあなたの答えを受け取ってくれてうれしいですが、他の人のために私はあなたの質問にも答えます-いくつかの情報を追加します。
ステップ1
まず、メインウィンドウが閉じたときにプログラムを終了する場合は、この動作がデフォルトであるWinFormsではないため、指定する必要があります。
(WPFのデフォルトは、最後のウィンドウが閉じたときです)
コード内
エントリポイントのアプリケーションインスタンスに移動します(VS 2012のWPFプログラムでは、デフォルトは内部App.xaml
にネストされているため、内部に移動しApp.xaml.cs
てコンストラクターに移動して作成します)。
コンストラクタでは、あなたのように指定するApplication
のがShutdownMode
あるべきShutdownMode
。OnLastWindowClose
。
public App()
{
ShutdownMode = ShutdownMode.OnLastWindowClose;
}
XAMLの場合
App.xaml
VS 2012がデフォルトで作成したファイルに移動します(または自分で作成します)。ルートはApplication
です。Application
さんがShutdownMode
でなければなりませんShutdownMode
。OnLastWindowClose
。
<Application x:Class="WpfApplication27.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
ShutdownMode="OnMainWindowClose">
それが機能する場合は、完了です。あなたは読書をやめることができます。
ステップ2
上記が機能しなかった場合(WPFアプリケーションを最初から作成したと思います)、メインウィンドウはアプリケーションにメインウィンドウとして認識されていない可能性があります。したがって、それも指定します。
コード内
手順1で行ったようにアプリケーションのコンストラクターに移動し、それを指定しApplication
ます。MainWindow
の価値はあなたですWindow
です:
MainWindow = mainWindow;
XAMLの場合
Application
手順1で行ったようにXAMLに移動し、それを指定しApplication
ます。MainWindow
の値はあなたWindow
です:
MainWindow = "mainWindow";
代替案
それは持っているので、私は(WPFは、あなたがこれを行うにはしたくありませんという理由だけで、これが最善の方法だとは思いませんApplication
のShutdownMode
)、あなただけのイベントメソッド(OnEventHappened)をオーバーライド/イベントを使用することができます。
MainWindowの分離コードファイルに移動し、以下を追加します。
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown();
}