J'essaye de faire une boîte de dialogue de confirmation en utilisant l'objet ChildWindow
de Silverlight.Silverlight Confirmer la boîte de dialogue pour mettre en pause le fil
Idéalement, je voudrais que cela fonctionne comme MessageBox.Show()
, où l'application entière s'arrête jusqu'à ce qu'une entrée soit reçue de l'utilisateur.
Par exemple:
for (int i = 0; i < 5; i++)
{
if (i==3 && MessageBox.Show("Exit early?",
"Iterator", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
break;
}
}
cesseraient l'itération à 3 si l'utilisateur touche OK ...
Cependant, si je devais faire quelque chose le long des lignes:
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;
}
}
}
Cela ne fonctionnerait pas clairement, car le fil n'est pas arrêté ... confirm.DialogResult.HasResult
serait faux, et la boucle continuerait après 3.
Je me demandais simplement comment je pourrais y arriver correctement. Silverlight est monothread, donc je ne peux pas mettre le fil en veille et le réveiller quand je suis prêt, alors je me demande s'il y a autre chose que les gens pourraient recommander?
J'ai envisagé d'inverser la logique - c'est-à-dire de passer les actions que je veux réaliser aux événements Oui/Non, mais dans mon cas, cela ne marcherait pas vraiment.
Merci d'avance!
C'est génial! Je vais essayer et voir comment ça marche ... – AlishahNovin
Il peut facilement être adopté pour exécuter l'énumérateur dans un thread d'arrière-plan, ce qui rend très simple le flux de travail de l'interface utilisateur multithread. – SLaks
+1. Point secondaire: ne voulez-vous pas dire «return return confirm» dans «YourMethod»? –