2014-02-14 48 views
0

我以這種方式使用MessageBox添加監聽器,消息框OK按鈕在Windows Phone的

Deployment.Current.Dispatcher.BeginInvoke(() => { 

       MessageBox.Show("The alarm has been raised"); 
      }); 

用戶點擊確定後如何採取行動?

+1

'MessageBox.Show'方法返回一個'MessageBoxResult'變量,它表明採取了哪些操作(確定,取消,無,是或否)。請參閱[MSDN](http://msdn.microsoft.com/zh-cn/library/ms598690(v = vs.110).aspx)。 –

回答

1

在您的項目中添加Microsoft.Xna.Framework.GamerServices的引用。

Deployment.Current.Dispatcher.BeginInvoke(() => { 
      List<string> messageboxitm = new List<string>(); 
      messageboxitm.Add("Yes"); 
      messageboxitm.Add("No"); 
      IAsyncResult result = Guide.BeginShowMessageBox("Message", "The alarm has been raised", messageboxitm, 0, MessageBoxIcon.Alert, new AsyncCallback(OnMessageBoxClosed), null); 

}); 
private void OnMessageBoxClosed(IAsyncResult ar) 
     { 
      int? buttonIndex = Guide.EndShowMessageBox(ar); 
      switch (buttonIndex) 
      { 
       case 0: 
        //Do your work 
        break;    
       default: 
        break; 
      } 
     } 
+0

被認爲是最優雅的解決方案。 – Yoda

0
 IAsyncResult result =Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox(
"Info", 
"Alarm has been raised", 
new string[] { "OK", "Call emergency" }, 
0, 
Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.None, 
null, 
null); 

     result.AsyncWaitHandle.WaitOne(); 
     media.AutoPlay = true; 
    } 
2

在簡單的情況下,你可以使用MessageBoxResult(在Windows Phone的只限於按鈕OK /艾伯塔省):​​

Deployment.Current.Dispatcher.BeginInvoke(() => 
{ 
    MessageBoxResult result = MessageBox.Show("Show next message?", "Question", MessageBoxButton.OKCancel); 
    // code after user click 
    if (result == MessageBoxResult.OK) MessageBox.Show("Yeah"); 
}); 

但它是有點有限,不能更改按鈕的內容。使用Guide.BeginShowMessageBox的解決方案更具可配置性。您也可以使用其他解決方案:CustomMessageBox from Windows Phone Toolkit,如果您有Telerik - RadMessageBox

相關問題