win8開發(5)——消息框

在Windows 8 Modern界面應用程序中 ,已然沒有了我們過去很熟悉的MessageBox,那麼,如果我們需要彈出提示框怎麼辦呢?
因此,我們先來認識一個類——MessageDialog(位於Windows.UI.Popups命名空間)。對的,看名字估計也能猜個七八成了,我們正是要使用該類來顯示彈出對話框。
第一步,先new一個MessageDialog實例;
第二步,向Commands集合添加若干個UICommand,至少一個,最多三個,膽子大的話,你可以試試添加四個。這個UICommand就是對話框上顯示的按鈕,就像我們過去在傳統Windows下的消息框一樣,至少一個按鈕,也可能兩個,或者三個。
第四步,顯示消息框。

光看文字是有些抽象的,這樣吧,下面我們來用實例來說明。
1、啓動VS,新建一個空白頁面的應用程序。
2、在MainPage.xaml中聲明三個按鈕,分別用來顯示帶有一個,兩個,三個按鈕的彈出框

  • <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">  
  •     <StackPanel VerticalAlignment="Center">  
  •         <StackPanel Orientation="Horizontal">  
  •             <Button Content="一個按鈕的消息框" Click="onOKClick"/>  
  •             <Button Content="兩個按鈕的消息框" Click="onYesNoClick"/>  
  •             <Button Content="三個按鈕的消息框" Click="onThirdClick"/>  
  •         </StackPanel>  
  •         <TextBlock x:Name="tbTip" Margin="3,6,0,0" FontSize="24"/>  
  •     </StackPanel>  
  • </Grid>  
3、分別在三個按鈕的Click事件上右擊,從彈出的菜單中選擇“定位到事件處理程序”,這樣在代碼中會自動生成事件處理方法。
4、打開代碼文件,引入以下命名空間。

QQ截圖20121102141602.png
5、處理上面三個Click事件。
  • private async void onOKClick(object sender, RoutedEventArgs e)  
  • {  
  •     MessageDialog msg = new MessageDialog("只帶一個按鈕的消息框。", "提示");  
  •     msg.Commands.Add(new UICommand("確定", new UICommandInvokedHandler(OnUICommand)));  
  •     await msg.ShowAsync();  
  • }  
  •   
  • private async void onYesNoClick(object sender, RoutedEventArgs e)  
  • {  
  •     MessageDialog msg = new MessageDialog("帶兩個按鈕的消息框。");  
  •     msg.Commands.Add(new UICommand("是",new UICommandInvokedHandler(OnUICommand)));  
  •     msg.Commands.Add(new UICommand("否", new UICommandInvokedHandler(OnUICommand)));  
  •     await msg.ShowAsync();  
  • }  
  •   
  • private async void onThirdClick(object sender, RoutedEventArgs e)  
  • {  
  •     MessageDialog msg = new MessageDialog("帶三個按鈕的消息框。");  
  •     msg.Commands.Add(new UICommand("重試", new UICommandInvokedHandler(OnUICommand)));  
  •     msg.Commands.Add(new UICommand("忽略", new UICommandInvokedHandler(OnUICommand)));  
  •     msg.Commands.Add(new UICommand("取消", new UICommandInvokedHandler(OnUICommand)));  
  •     // 默認按鈕索引   
  •     msg.CancelCommandIndex = 2;  
  •     msg.DefaultCommandIndex = 0;  
  •     await msg.ShowAsync();  
  • }  
  •   
  • async void OnUICommand(IUICommand cmd)  
  • {  
  •     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,  
  •         () =>  
  •         {  
  •             this.tbTip.Text = "您點擊了 " + cmd.Label + " 按鈕。";  
  •         });  
  • }  
在實例化UICommand時,我們使用了以下構造函數。
QQ截圖20121102141707.png   
指定一個與UICommandInvokedHandler委託綁定的方法,這樣,當某個UICommand被用戶單擊後,會調用UICommandInvokedHandler綁定的對應方法,在本例中,所有UICommand都綁定到同一個方法。

此外,MessageDialog有兩個屬性應當注意一下:
1、CancelCommandIndex:默認“取消”按鈕的索引,這個索引是對應於Commands中添加的UICommand的索引,從0開始,按添加順序,第一個UICommand的索引爲0,第二個UICommand的索引爲1,第三個爲2,依此類推(當然,最多就只有三個,索引2)。假如CancelCommandIndex屬性設置了1,那麼,消息框中的第二個按鈕就是默認的“取消”命令,只要按下ESC鍵就能觸發。
2、DefaultCommandIndex:默認“確定”指令的索引,例如設置爲0,即Commands中第一個按鈕爲默認命令,只要按下回車鍵就能觸發。

要顯示MessageDialog,調用ShowAsync方法,注意這個方法是異步方法,要用await關鍵字(C# 5.0),同時,凡是調用了異步方法並加有await關鍵字的方法,在定義時還要加上async關鍵字。
現在,我們可以運行應用程序。
1.png 


3.png 

4.png 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章