在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>
4、打開代碼文件,引入以下命名空間。
- 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 + " 按鈕。";
- });
-
}
此外,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關鍵字。
現在,我們可以運行應用程序。