Ho bisogno di un MessageBox.Show(), ma con una funzionalità estesa: la finestra di messaggio incorporata per Windows Phone 7 non mostrerà pulsanti arbitrari, solo OK o annulla, ho bisogno per esempio Sì, no. Ho bisogno di un metodo Show che ritorni solo quando l'utente fa clic su un pulsante. Ho provato a creare la mia messagebox come popup. Il problema è che è asincrono come tutto nel thread UI in WP7 e non riesco a bloccare il thread UI perché il thread UI è responsabile anche della gestione degli eventi click del pulsante. Ho visto un esempio ChildWindow per WP7, ma era anche asincrono, devo avere un metodo Show() che ritorna solo quando l'utente fa clic. Eventuali suggerimenti? Alcuni tipi di DoEvents() potrebbero aiutarmi molto, ma non c'è un metodo simile in WP7 :(MessageBox.Show per Windows Phone 7
risposta
è possibile utilizzare XNA di Guide.BeginShowMessageBox() per visualizzare un MessageBox con pulsanti personalizzati. Here's un tutorial su come usarlo.
Nota che il parametro MessageBoxIcon non seleziona un'icona su WP7, invece seleziona il n Otification sound quando viene visualizzata la finestra di messaggio.
MODIFICA: Oops, non ho letto il tuo requisito sincrono prima di pubblicare. Forse puoi impostare un flag per interrompere tutto ciò che vuoi impedire l'esecuzione e resettarlo una volta che l'utente ha effettuato una selezione.
Ho trovato questo quando cercavo qualcosa di simile, ma mi sono ritrovato a usare solo la casella dei messaggi incorporata. la possibilità di avere pulsanti personalizzati.
Grazie per la risposta, ma la parte Show() non è soddisfatta in questa soluzione, solo la parte dei pulsanti arbitrari; se modifico questo: NotificationBox.Show ("Exit", "Are you sure?", new NotificationBoxCommand ("Yes",() => {}), new NotificationBoxCommand ("No",() => {})); a questo: AutoResetEvent waitHandle = new AutoResetEvent (false); NotificationBox.Show ("Exit", "Are you sure?", new NotificationBoxCommand ("Yes",() => {waitHandle.Set();}), new NotificationBoxCommand ("No",() => {waitHandle.Set();})); waitHandle.WaitOne(); ... poi vengo bloccato, questo è il mio problema :( – Vic
Utilizzare una tela con tutto ciò che si desidera. Quindi basta usare la proprietà visibility per farlo apparire ..
- 1. Windows Phone 7 SDK
- 2. WCF + Windows Phone 7
- 3. Controllo scuotimento per Windows Phone 7
- 4. Windows Phone 7 Controllo pivot per WPF?
- 5. Client FTP per Windows Phone 7 Mango?
- 6. Listbox Drag'n'Drop ordinabile per Windows Phone 7
- 7. Controllo calendario per Windows Phone 7?
- 8. Wintellect PowerCollections per Windows 7 Phone?
- 9. Windows phone 7 config/appSettings?
- 10. windows 7 phone - close keyboard
- 11. Windows Phone 7: Programmazione socket
- 12. HttpUtility.UrlEncode in Windows Phone 7?
- 13. Windows Series Phone 7 "Cloud"
- 14. Windows Phone 7 - Caricamento animazione
- 15. Windows phone 7 scrollviewer problem
- 16. NUnit con Windows Phone 7
- 17. Sviluppare Windows Phone 7 su Windows XP
- 18. Vibrazione fino a casella messaggio chiusa Windows Phone 7
- 19. Consentire UnsafeHeaderParsing in Windows Phone 7
- 20. Distribuzione di applicazioni su Windows Phone 7
- 21. Digitando in windows phone 7 simulator
- 22. Cancellare IsolatedStorage dall'emulatore di Windows Phone 7?
- 23. posizione: fissa in Windows Phone 7
- 24. Parsing JSON su Windows Phone 7
- 25. Contenuto web Silverlight su Windows Phone 7
- 26. Quadro di simulazione di Windows Phone 7?
- 27. Windows Phone 7 Controlli grafici/grafici
- 28. Windows Phone 7 Animazione ListBox alla selezione
- 29. MD5 è supportato su Windows Phone 7?
- 30. System.Json namespace mancante da Windows Phone 7
Sì, ma il mio problema più grande è che devo usare un metodo che ritorna solo quando un pulsante è stato cliccato.Posso usare ad esempio un timer per aspettare fino a quando il fare clic su evento e continuare il programma nel gestore eventi timeout se la condizione è soddisfatta, ma non riesco a capire come implementarlo in un metodo :( – Vic
Ho provato e funziona !!! :): – Vic
AutoResetEvent waitHandle = new AutoResetEvent (false); Guide.BeginShowMessageBox ("Versione di Windows", "Scegli una versione di Windows.", nuovo Elenco {"Vista", "Sette"}, 0, MessageBoxIcon.Error, asyncResult => { int ? returned = Guide.EndShowMessageBox (asyncResult); waitHandle.Set(); }, null); waitHandle.WaitOne(); questo non blocca il thread dell'interfaccia utente! Grazie :) –
Vic