ユーザーがアプリケーションを閉じると、Save-File-Messageを表示する必要があります(編集したファイルの変更を破棄したいことを確認する必要があります)。閉鎖イベントのShowDialog
これを実装するために、私は、コマンドバインディング(キージェスチャーなし)でメニューアイテムを持っている:
private void Command_Exit(object sender, ExecutedRoutedEventArgs e)
{
Application.Current.Shutdown();
}
メインウィンドウには、クロージング・イベントがあります。この場合、保存されていないファイルがあるかどうかを確認します。はい、SaveDialogはが開かなければならない場合(ファイルが保存されなければならない、選択する):
private void Window_Closing(object sender, CancelEventArgs e)
{
if (sdl.Count() > 0)
{
SaveDialog sd = new SaveDialog();
IEnumerable<Doc> close = sd.ShowDialog(this);
if (close == null)
e.Cancel = true;
else
foreach (Doc document in close)
document.Save();
}
}
このShowDialogを-方法で(私のSaveDialogはクラスで実装)私は
bool? ret = ShowDialog();
if (!ret.HasValue)
return null;
if (!ret.Value)
return null;
を呼び出します問題は次のとおりです:
私はAlt + F4ショートカットを使用してアプリケーション(メインウィンドウのデフォルト動作)を使用すると動作し、保存されていないファイルがある場合はsavedialogを取得します。私はCommand_Exit-メソッドを実行することにより、アプリケーションを閉じる場合は、nullを
bool? ret = ShowDialog();
リターンをメソッドは、呼び出し、ダイアログは表示されません。
CommandBindingにAlt + F4 KeyGestureを割り当てると、問題が切り替わります。Command_Exitの実行はうまくいくがAlt + F4ショートカットは機能しない。
ShowDialog() - メソッドが両方のケースで動作しない理由と、それを修正する方法は何ですか?
どのようにしてウィンドウを閉じることができますか?インタラクティブにだけでなく、 – Jodrell