2012-09-15 95 views

回答

26

MessageDialog class應該適合您的需求。

+0

在其名稱空間可進行MessageDialog類包含 – user1547566

+0

@ user1547566我的答案鏈接的類。 –

+0

你明白了,謝謝 – user1547566

47
MessageDialog msgDialog = new MessageDialog("Your message", "Your title"); 

    //OK Button 
    UICommand okBtn = new UICommand("OK"); 
    okBtn.Invoked = OkBtnClick; 
    msgDialog.Commands.Add(okBtn); 

    //Cancel Button 
    UICommand cancelBtn = new UICommand("Cancel"); 
    cancelBtn.Invoked = CancelBtnClick; 
    msgDialog.Commands.Add(cancelBtn); 

    //Show message 
    msgDialog.ShowAsync(); 

,您的電話備份

private void CancelBtnClick(IUICommand command) 
{ 
} 

private void OkBtnClick(IUICommand command) 
{ 
} 


附:您可以按照this tutorial瞭解更多信息。

+0

難道沒有一個更簡單的方法嗎? –

+2

只是在它上面做一個包裝,它變得更簡單 –

8

爲了更簡單的方法,只需顯示消息文本和確定按鈕。使用Windows.UI.Popups命名空間。創建messagebox()該方法應該是一個方法

using Windows.UI.Popups; 
protected async void messageBox(string msg) 
{ 
     var msgDlg = new Windows.UI.Popups.MessageDialog(msg); 
     msgDlg.DefaultCommandIndex = 1; 
     await msgDlg.ShowAsync(); 
} 

然後調用這個方法在你的代碼一樣

messageBox("Unexpected error held"); 
+1

你幾乎不應該使用'async void'方法。 – svick

+0

@svick:這是什麼原因? –

+2

@DominikC因爲沒有辦法找出它何時完成,這也使得錯誤處理幾乎不可能。有關詳細信息,請參閱[本文](http://msdn.microsoft.com/zh-cn/magazine/jj991977.aspx)。 – svick

12

我更簡單的方法,確認類型的消息框:

var dlg = new MessageDialog("Are you sure?"); 
    dlg.Commands.Add(new UICommand("Yes", null, "YES")); 
    dlg.Commands.Add(new UICommand("No", null, "NO")); 
    var op = await dlg.ShowAsync(); 
    if ((string)op.Id == "YES") 
    { 
    //Do something 
    } 
2

附加珍聞:

它出現在現代的Windows應用程序中一個MessageDialog在您的應用程序進行Window.Current.Active()調用之前不會顯示,這通常發生在應用程序類的OnLaunched()方法中。如果您嘗試使用MessageDialog來顯示啓動異常等情況,請記住這一點很重要。

我的測試表明MessageDialog.ShowAsync()實際上可能會等待,但是如果Window.Current.Active()尚未被調用,那麼沒有顯示對話框,所以從代碼執行的角度來看,它看起來像一切正在工作但沒有顯示對話框。

如果目標是在啓動期間顯示異常,我可以考慮兩個選項(可能會有更多)。

  1. 捕獲異常信息,然後等待在Window.Current.Activate()之後顯示它。這可以工作,如果例外情況是應用程序可以從中恢復並繼續啓動。例如,如果在恢復保存的狀態信息時出現錯誤,則應用可能需要將該狀態報告給用戶,然後繼續啓動,就好像沒有保存狀態一樣。

  2. 如果情況是這樣的,應用程序正在拋出它的手,並打算終止,但想讓用戶知道發生了什麼,那麼另一種解決方案可能是有一個單獨的專用代碼塊/方法,插入一個將新的乾淨幀放入Windows.Current.Content中,使用Windows.Current.Activate()激活它,然後調用MessageDialog.ShowAsync()。我還沒有嘗試過這種方法,所以我不確定是否還需要滿足其他條件,例如可能將頁面加載到框架中。

0

使用像頁:

private async void AppBarButton_Click(object sender, RoutedEventArgs e) 
{ 
    Windows.UI.Popups.MessageDialog a = new Windows.UI.Popups.MessageDialog("hello this is awth"); 
    await a.ShowAsync(); 
} 
+0

如果有人遺忘了sql密碼,那麼他怎麼用呢。 – user5823144

相關問題