WPF关闭子关闭父窗口
我有与上述here相同的样本。快速结束:当最后一个子窗口关闭时,MainWindow关闭。WPF关闭子关闭父窗口
我的问题:我无法解决我所描述的解决方案的问题。我无法制作一个可以发生的程序。只在我的一个更大的前卫。也许有人有一个想法或知道任何进一步的步骤。
感谢您的阅读 - 托马斯
如这里要求是一个有点代码: 这是在主窗口的部分:
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;
}
}
试试用您的App.xaml.cs
的ShutDownMode
物业玩。三个值OnMainWindowClose
,OnLastWindowClose
和OnExplicitShutdown
,默认是OnLastWindowClose
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
}
}
谢谢,这个伎俩。你有解释你的解决方案吗? –
那么默认'ShutdownMode'是'OnLastWindowClose',所以如果你关闭所有的子窗口,那么它将关闭应用程序。 'OnMainWindowClose'表示应用程序将在你的App.Current.MainWindow关闭时关闭,'OnExplicitShutdown'表示只有当你告诉它关闭时它才会关闭。 – Rachel
因此,当OnLastWindowClose时,MainWindow不算作窗口吗? –
,你可以尝试设置子窗口的allowShutDown
到false
,然后显示主窗口。我假设您将从mainwindow的可见性开始设置为hidden
。
Application.Current.MainWindow.Visibility = System.Windows.Visibility.Visible;
this.allowShutDown = false;
的allowShutDown
将是你自己的财产ü可以设定,让你不得不处理closing
事件。
- 以下代码适用于我。
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(); } }
你能具体描述一下您的设计和像它在博客文章中提到你不能做什么?我现在不明白。 – MatthiasG