Если вам нужно поведение hide / show, вам вообще не следует вызывать Window.Close () для окна, а скрывать его, вызывая Window.Hide ().Если пользователь закрыл его, и закрытие неизбежно, вы можете попробовать следующее.Переопределите OnClosing внутри окна и установите для e.Cancelled значение true, затем вызовите .Hide ().Это должно позволить окну быть скрытым / показанным, даже если пользователь закрывает окно.
// Disclaimer, untested!
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true; // cancels the window close
this.Hide(); // Programmatically hides the window
}
РЕДАКТИРОВАТЬ:
Хорошо, теперь я правильно прочитал ваш вопрос ;-) Так как я могу начать заново мое окно после закрытия или скрытияокно.
Когда вы снова показываете окно, используя описанное выше, оно, конечно, будет тем же, что и ранее скрытое, следовательно, будет иметь те же данные и состояние.Если вам нужно совершенно новое содержимое, вам нужно создать новый Window () и вызвать для этого Window.Show ().Если вы скроете / покажите, как указано выше, то вы вернете окно в то же самое состояние, прежде чем оно было скрыто.
Используете ли вы шаблон MVVM в своем приложении WPF?Если это так, вы можете попробовать следующее.Имея все данные в вашей ViewModel и привязанные к представлению (то есть: нет бизнес-логики или данных в коде за окном), вы можете вызывать метод в ViewModel для сброса всех данных при отображении окна.Ваши привязки обновятся, и состояние окна будет сброшено.Обратите внимание, что это будет работать, только если вы правильно следовали MVVM и привязали все элементы в главной форме к свойствам ViewModel (включая элементы управления).
С уважением,