Проблема всплывающего окна для WPF - PullRequest
0 голосов
/ 14 августа 2010

Теперь у меня есть окно установки, в котором есть кнопка отмены 1) приостановить раскадровку 2) выскочить мое окно отмены

Для окна отмены будет кнопка «ОК», в которой мне будет предложено окно «Ошибка».

Итак, теперь я хочу знать, как отслеживать, когда пользователь закрывает кнопку окна (X), чтобы я мог закрыть окно отмены и, таким образом, вернуться в окно установки и возобновить раскадровку.

Пока что я сделал это

private void cancel_btn_Click(object sender, RoutedEventArgs e)
{
    Storyboard SB = (Storyboard)FindResource("Install");
    SB.Pause();

    popout_Cancel MyApp = new popout_Cancel();
    MyApp.Show();

    if (MyApp.OK.IsMouseCaptured == false)
    {
        MyApp.Close();
        SB.Resume();
    }
}

1 Ответ

0 голосов
/ 14 августа 2010

Вы можете показать окно как диалоговое окно модели и использовать DialogResult для получения результата.

Если я правильно вас понимаю, вы хотите знать, нажал ли пользователь кнопку «Отмена», если он просто закрыл окно?Я не уверен, что это то, о чем вы просите, но если вы просто хотите показать диалоговое окно подтверждения и получить результат, вот как:

В окне отмены:

private void CancelWindow_OnOkClickedobject sender, RoutedEventArgs e)
{

     this.Close();
}

private void CancelWindow_OnCancelClickedobject sender, RoutedEventArgs e)
{
     this.DialogResult = true;
     this.Close();
}

Затем, когда вы хотите показать это окно:

popout_Cancel MyApp = new popout_Cancel();

bool? result = MyApp.ShowDialog();

Если пользователь нажимает кнопку отмены, результат будет установлен в значение true.Если пользователь нажимает кнопку X или нажимает кнопку ОК, результат будет установлен в значение false.

Как только вы получите результат, вы можете возобновить свою раскадровку.Таким образом, код будет выглядеть следующим образом:

Storyboard SB = (Storyboard)FindResource("Install");

SB.Pause();

popout_Cancel MyApp = new popout_Cancel();

bool? result = MyApp.ShowDialog();

if (result == null || result == false)
     SB.Resume();
else
     //they really want to cancel, terminate the app

Отредактировано: ShowDialog () возвращает Nullable, хотя ShowDialog (), по-видимому, возвращает только true или false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...