2011-01-03 33 views
7

MessageBox.Show(), ancak bir genişletilmiş işlevsellik gerekir: Windows Phone 7 için yerleşik ileti kutusu keyfi düğmeler göstermez, sadece Tamam veya iptal, örneğin ihtiyacım var Evet, hayır. Sadece kullanıcı bir düğmeyi tıkladığında geri dönecek bir Gösterme yöntemine ihtiyacım var. Kendi mesaj kutumu pop-up olarak yapmaya çalıştım. Sorun, WP7'deki UI-thread'daki her şey kadar asenkronize olması ve UI-thread'in buton tıklama olaylarını ele almaktan sorumlu olması nedeniyle UI-thread'i bloke edemem olmasıdır. WP7 için bir ChildWindow örneği gördüm, ancak bu da eşzamansızdı, yalnızca kullanıcı tıklattığında dönen bir Show() yöntemine sahip olmalıyım. Baska öneri? Bir çeşit DoEvents() bana çok yardımcı olabilir, ancak WP7'de böyle bir yöntem yoktur :(MessageBox.Show Windows Phone 7 için

cevap

6

Sen özel düğmeleri olan bir MessageBox göstermek için XNA en Guide.BeginShowMessageBox() kullanabilirsiniz. Here's kullanmak için nasıl bir öğretici. MessageBoxIcon parametre seçmek etmediğini

Not WP7 üzerinde bir simge, bunun yerine n seçer Mesaj kutusu görüntülendiğinde ses seviyesi duyulur.

DÜZENLEME: Hatalar, gönderilmeden önce senkronize gereksinimi okumadım. Belki de kaçmayı engellemek için istediğinizi durdurmak için bir bayrak ayarlayabilir ve kullanıcı bir seçim yaptıktan sonra sıfırlayabilirsiniz.

+0

Evet, ama benim en büyük problemim, sadece bir düğme tıklandığında döndüren bir yöntem kullanması gerektiğidir. koşulu tıklatın ve koşulu yerine getirdiyse zaman aşımı olay işleyicisinde programa devam edin, ancak bunu tek bir yöntemde nasıl uygulayacağımı anlayamıyorum :( – Vic

+0

Denedim ve işe yarıyor !!! :): – Vic

+0

AutoResetEvent waitHandle = new AutoResetEvent (false); Guide.BeginShowMessageBox ("Windows'un sürümü", "Windows'un bir sürümünü seçin.", yeni Liste {"Vista", "Seven"}, 0, MessageBoxIcon.Error, asyncResult => { int ? return = Guide.EndShowMessageBox (asyncResult); waitHandle.Set(); }, null); waitHandle.WaitOne(); bu, UI iş parçacığını engellemez! Thanx :) – Vic

2

Bunu benzer bir şey ararken buldum, ancak sadece yerleşik mesaj kutusunu kullanarak yaralıyorum. özel düğmeler var yeteneği.

Windows Phone 7 Custom Message Box

+0

Cevabınız için teşekkür ederiz, ancak Show() bölümü bu çözümden memnun değil, sadece keyfi düğmeler kısmı; Bunu değiştirirseniz: NotificationBox.Show ("Çıkış", "Emin misiniz?", new NotificationBoxCommand ("Evet",() => {}), new NotificationBoxCommand ("Hayır",() => {})); bunun için: AutoResetEvent waitHandle = yeni AutoResetEvent (false); NotificationBox.Show ("Çıkış", "Emin misiniz?", new NotificationBoxCommand ("Evet",() => {waitHandle.Set();}), new NotificationBoxCommand ("Hayır",() => {waitHandle.Set();})); waitHandle.WaitOne(); ... o zaman kilitlenme olsun, bu benim problemim :( – Vic

1

Üzerinde istediğiniz her şeye sahip bir Tuval kullanın. Sonra sadece görünebilirlik özelliğini kullanın ...