如何重新打开关闭的窗口?

时间:2014-09-30 14:04:45

标签: c# wpf prism viewmodellocator

我在我的应用中将ShutdownMode切换为OnExplicitShutdown,所以当我关闭窗口时,我的应用仍在运行,我尝试重新打开这样的窗口:

new MainWindow().Show;

但我有以下错误:Set property '...ViewModelLocator.AutoWireViewModel' threw an exception.InnerException是:'AutoWireViewModel' property was already registered by 'ViewModelLocator'

你知道如何解决这个问题吗?

我使用ViewModelLocator

中的Microsoft.Prism

1 个答案:

答案 0 :(得分:1)

不幸的是,您只是在关闭后无法重新打开Window。但是,你可以“假装”你可以并且使用一点点欺骗......而不是首先关闭Window,你可以简单地隐藏它,因为它可以被隐藏并重新显示任意数量的次:

YourWindow.Visibility = Visibility.Collapsed;

通过将事件处理程序附加到Window.Closing Event,您可能可能会稍微改善这种情况。此特定事件提供了取消Close操作的方法,因此此时您可以隐藏它:

private void Window_Closing(object sender, CancelEventArgs e)
{
    // Cancel Window closing 
    e.Cancel = true;
    // Hide Window instead
    YourWindow.Visibility = Visibility.Collapsed;
}

如果您愿意,也可以使用Window.OnClosing Method将此功能放在Window代码中。