我有与提到的here相同的样本。 快速结束:MainWindow在最后一个子窗口关闭时关闭。
我的问题:我无法用所描述的解决方案解决我的问题。我无法制作一个可以进行的程序。只有我的一个更大的前卫。也许有人有想法或知道任何进一步的步骤。
感谢阅读 - 托马斯
根据要求,这里有一些代码: 这是MainWindow中的一部分:
bool editAfterSearch = false;
Movie selectedMovie = (Movie)this.listView.SelectedItem;
Movie backup = (Movie)selectedMovie.Clone();
if (new OnlineSearchWindow().EditMovieViaOnlineSearch(ref selectedMovie, out editAfterSearch))
{
this.coverFlow.Update(selectedMovie);
}
这就是ChildWindow的一部分:
public bool EditMovieViaOnlineSearch(ref Movie preset, out bool editAfter)
{
this.exitWithOk = false;
this.editMovieAfterSearch = false;
this.tbx_SearchTerm.Text = preset.Title;
this.linkedMovie = preset;
this.ShowDialog();
editAfter = editMovieAfterSearch;
if (this.exitWithOk)
{
this.linkedMovie.CloneOnlineInformation(ref preset);
preset.Bitmap = this.linkedMovie.Bitmap;
return true;
}
else
{
return false;
}
}
答案 0 :(得分:8)
尝试使用ShutDownMode
的{{1}}属性进行游戏。 3个值为App.xaml.cs
,OnMainWindowClose
和OnLastWindowClose
,默认值为OnExplicitShutdown
OnLastWindowClose
答案 1 :(得分:1)
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if (MessageBoxResult.No == (MessageBox.Show("Are you sure you want to close this?.", "ProjectName", MessageBoxButton.YesNo))) { e.Cancel = true; foreach (var item in Application.Current.Windows) { Window window = item as Window; if (window.Title == "PopUpWindowName") { window.Topmost = true; break; } } return; } else { base.OnClosed(e); Application.Current.Shutdown(); } }
答案 2 :(得分:0)
您可以尝试将子窗口的allowShutDown
设置为false
,然后显示主窗口。我假设您将从主窗口的可见性设置为hidden
开始。
Application.Current.MainWindow.Visibility = System.Windows.Visibility.Visible;
this.allowShutDown = false;
allowShutDown
将是您自己的属性,您可以将其设置为允许您处理closing
事件。