Невозможно повторно использовать окно wpf после закрытия

Я использую окно для изменения конфигурации базы данных для моего приложения. Нажатием кнопки настроек управляется Config (), при нажатии отображаются окна настроек. Если я закрою крест с помощью знака в правом углу окна, я не смогу повторно использовать окна, которые отображаются после исключения.

Невозможно установить видимость или вызвать Show, ShowDialog или WindowInteropHelper.EnsureHandle после закрытия окна.

ConfigDialogBox configDlg = new ConfigDialogBox();

        private void SettingsChanged(object sender, RoutedEventArgs e)
        {
            Database.host = configDlg.host;
            Database.port = configDlg.port;
            Database.user = configDlg.user;
            Database.password = configDlg.password;
            Database.database = configDlg.database;            
            ConfigDlg.Visibility = Visibility.Hidden;
        }

        private void Config(object sender, RoutedEventArgs e)
        {            
            configDlg.Show();
            configDlg.okButton.Click+=new RoutedEventHandler(SettingsChanged);
            configDlg.cancelButton.Click+=new RoutedEventHandler(SettingsChanged);
        }

        void cancel_Click(object sender, RoutedEventArgs e)
        {         
           ConfigDlg.Visibility = Visibility.Hidden;
        }

Как я могу использовать его после закрытия?

 user91335927 июн. 2012 г., 08:06
Это окно содержит конфигурацию базы данных, и я потеряю все настройки, если окна закрыты. Работает нормально с ок и отмена, только закрытие вызывает проблему.
 tehlexx27 июн. 2012 г., 08:01
Почему вам нужно использовать его повторно, а вы просто не можете создать новый?

Ответы на вопрос(2)

Решение Вопроса

Если закрыть окно через что-то кромеOK а такжеCancel кнопки это ваша проблема, вам нужно справиться сWindow.Closing событие (см. ссылку для примера).

ConfigDialogBox configDlg = null;



private void Config(object sender, RoutedEventArgs e)
        {            
         configDlg = new ConfigDialogBox();
            configDlg.Show();
            configDlg.okButton.Click+=new RoutedEventHandler(SettingsChanged);
            configDlg.cancelButton.Click+=new RoutedEventHandler(SettingsChanged);
        }
 27 июн. 2012 г., 08:29
также посмотрите здесь, потому что вам понадобится постоянный способ хранения ваших настроекstackoverflow.com/questions/453161/…
 27 июн. 2012 г., 08:24
или вы можете отменить событие включения с помощью e.Cancel = true;

Ваш ответ на вопрос