Silverlight Confirm Dialog, aby wstrzymać wątek

Próbuję wykonać okno dialogowe potwierdzenia za pomocą SilverlightChildWindow obiekt.

Idealnie, chciałbym, żeby to działałoMessageBox.Show(), gdzie cała aplikacja zatrzymuje się do momentu otrzymania danych wejściowych od użytkownika.

Na przykład:

for (int i = 0; i < 5; i++)
{
    if (i==3 && MessageBox.Show("Exit early?",
        "Iterator", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    {
        break;
    }
}

Zatrzymałby iterację przy 3, jeśli użytkownik kliknie OK ...

Jeśli jednak miałbym zrobić coś na wzór:

ChildWindow confirm = new ChildWindow();
confirm.Title = "Iterator";
confirm.HasCloseButton = false;
Grid container = new Grid();

Button closeBtn = new Button();
closeBtn.Content = "Exit early";
closeBtn.Click += delegate { confirm.DialogResult = true; confirm.Close(); };
container.Children.Add(closeBtn);

Button continueBtn = new Button();
continueBtn.Content = "Continue!";
continueBtn.Click += delegate { confirm.DialogResult = false; confirm.Close(); };
container.Children.Add(continueBtn);

confirm.Content = container;

for(int i=0;i<5;i++) {
  if (i==3) {
    confirm.Show();
    if (confirm.DialogResult.HasResult && (bool)confirm.DialogResult) {
      break;
    }
  }
}

To oczywiście nie zadziała, ponieważ wątek nie jest zatrzymany ...confirm.DialogResult.HasResult byłoby fałszywe, a pętla byłaby kontynuowana po 3.

Zastanawiam się tylko, jak mogę to właściwie zrobić. Silverlight jest jednowątkowy, więc nie mogę po prostu przestawić wątku w stan uśpienia, a potem go obudzić, gdy będę gotowy, więc zastanawiam się tylko, czy ludzie mogą polecić coś jeszcze?

Rozważyłem odwrócenie logiki - tj. Przekazanie działań, które chcę wykonać, do zdarzeń Tak / Nie, ale w moim konkretnym przypadku to nie zadziałałoby.

Z góry dziękuję!

questionAnswers(3)

yourAnswerToTheQuestion