3

我有与这里提到的完全相同的样本。快速结束:当最后一个子窗口关闭时,主窗口关闭。

我的问题:我无法用所描述的解决方案解决我的问题。我不能在它发生的地方制作一个程序。仅在我较大的前卫之一中。也许有人有一个想法或知道任何进一步的步骤。

感谢阅读 - 托马斯

根据要求,这里有一些代码:这是 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;
    }
}
4

3 回答 3

9

尝试使用ShutDownMode您的App.xaml.cs. 3 个值是OnMainWindowCloseOnLastWindowCloseOnExplicitShutdown,默认值为OnLastWindowClose

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
    }
}
于 2011-10-05T13:42:15.363 回答
1
  1. 下面的代码对我有用。
私人无效Window_Closing(对象发送者,System.ComponentModel.CancelEventArgs e)
        {
            if (MessageBoxResult.No == (MessageBox.Show("您确定要关闭它吗?.", "ProjectName", MessageBoxButton.YesNo)))
            {
                e.取消=真;
                foreach(Application.Current.Windows 中的 var 项)
                {
                    窗口窗口 = 项目作为窗口;
                    if (window.Title == "PopUpWindowName")
                    {
                        window.Topmost = true;
                        休息;
                    }
                }
                返回;
            }
            别的
            {
                base.OnClosed(e);
                Application.Current.Shutdown();
            }
        }
于 2017-02-15T15:37:31.257 回答
0

您可以尝试将子窗口设置allowShutDownfalse然后显示主窗口。我假设您将从 mainwindow 的可见性设置为hidden.

Application.Current.MainWindow.Visibility = System.Windows.Visibility.Visible;
this.allowShutDown = false;  

allowShutDown将是您自己的属性,您可以设置它以使您必须处理closing事件。

于 2012-06-18T15:12:06.167 回答