[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來選擇第二個選項(否)
執行結果:
當然這只是簡單的應用,有興趣的人可以再深入研究喔!!!