Я выключаю ShutdownMode
в своем приложении на OnExplicitShutdown
поэтому, когда я закрываю окно, мое приложение все еще работает, и я пытаюсь открыть окно следующим образом:
new MainWindow().Show;
Но у меня есть следующая ошибка: Set property '...ViewModelLocator.AutoWireViewModel' threw an exception.
и InnerException
: 'AutoWireViewModel' property was already registered by 'ViewModelLocator'
Вы знаете, как это исправить?
Я использую ViewModelLocator
из Microsoft.Prism
К сожалению, вы просто не можете повторно открыть Window
после его закрытия. Тем не менее, вы можете "притворяться", что можете, и использовать небольшой обман... вместо того, чтобы сначала закрыть Window
, вы можете просто скрыть его, поскольку его можно скрывать и повторно отображать сколько угодно раз:
YourWindow.Visibility = Visibility.Collapsed;
Вы могли бы немного улучшить эту ситуацию, Window.Closing
обработчик событий с событием Window.Closing
. Это конкретное событие обеспечивает способ отмены операции Close
и поэтому в этот момент вы можете скрыть это:
private void Window_Closing(object sender, CancelEventArgs e)
{
// Cancel Window closing
e.Cancel = true;
// Hide Window instead
YourWindow.Visibility = Visibility.Collapsed;
}
Вы могли бы альтернативно поместить эту функциональность в код Window
используя метод Window.OnClosing
если хотите.