我在我的应用中将ShutdownMode
切换为OnExplicitShutdown
,所以当我关闭窗口时,我的应用仍在运行,我尝试重新打开这样的窗口:
new MainWindow().Show;
但我有以下错误:Set property '...ViewModelLocator.AutoWireViewModel' threw an exception.
和InnerException
是:'AutoWireViewModel' property was already registered by 'ViewModelLocator'
你知道如何解决这个问题吗?
我使用ViewModelLocator
Microsoft.Prism
答案 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
代码中。