[Windows Store App 開發筆記] Windows 8.1 彈出視窗---MessageDialog

[Windows Store App 開發筆記] Windows 8.1 彈出視窗---MessageDialog

前言  


 

小編最近在腦中建構的APP,需要用到彈出視窗,就稍微上網做了一點研究,發現其實有很多方法可以做到,其中一個是CoreWindowDialog,但是小編發現這個類別比較少人用,網路上資源也不多,除此之外在實作上還會有一些問題,這邊就暫且將它擱置。

 

今天小編要介紹的是另一個方法---MessageDialog,它是包含在 Windows.UI.Popups之下,其實程式碼很簡單,大家可以看以下的範例就能清楚明白。

 

實作  


 

1. 首先是簡單的xaml:

   1: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
   2:     <Button x:Name="Btn1" Content="清除" HorizontalAlignment="Left" Margin="235,344,0,0" VerticalAlignment="Top" FontSize="36" Click="Btn1_Click"/>
   3:     <TextBox x:Name="InputBox" HorizontalAlignment="Left" PlaceholderText="請輸入文字" Margin="238,246,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="36"/>
   4: </Grid>

 

2. 重點是xaml.cs,我們利用彈出視窗讓使用者確定是否要清除輸入,一個避免使用者按錯的機制

   1: public sealed partial class MainPage : Page
   2: {
   3:     public MainPage()
   4:     {
   5:         this.InitializeComponent();
   6:     }
   7:  
   8:     private async void Btn1_Click(object sender, RoutedEventArgs e)
   9:     {
  10:         var dialog = new MessageDialog("您的輸入將不再保留", "確定要清除輸入?");
  11:         dialog.Commands.Add(new UICommand("是", YesCommand));
  12:         dialog.Commands.Add(new UICommand("否", NoCommand));
  13:         dialog.DefaultCommandIndex = 0;
  14:         dialog.CancelCommandIndex = 1;
  15:         if (InputBox.Text!="")
  16:             await dialog.ShowAsync();
  17:     }
  18:  
  19:     void YesCommand(IUICommand command)
  20:     {
  21:         InputBox.Text = "";
  22:     }
  23:     void NoCommand(IUICommand command)
  24:     {
  25:         //do nothing
  26:     }
  27: }

 

註:我們可以看到MessageDialog的建構式,第一個為內容,第二個才是標題

 

另外YesCommand與NoCommand為按下按鈕的函式,在裡面可以撰寫對應的事件

 

最後DefaultCommandIndex設定為0,表示將預設的按鈕設定為第一個按鈕(是),使用者可以利用鍵盤上的ENTER來選擇它;同理CancelCommandIndex設為1,表示使用者可以按ESC來選擇第二個選項(否)

 

執行結果:

image

 

當然這只是簡單的應用,有興趣的人可以再深入研究喔!!!