Universal Windows Platform

Message Dialog


در این بخش از سری آموزش های برنامه نویسی پلتفرم ویندوز یونیورسال (برنامه نویسی ویندوز 10) به بحث نمایش پیغام ها می پردازیم. برای نمایش پیغام ها از Namespace (یا فضای نامی) زیر استفاده میکنیم.


using Windows.UI.Popups;

Message Dialog انواع مختلفی دارد که با تمامی آنها آشنا خواهید شد.

نکته : تمامی این مثال ها توسط مهندسان شرکت مایکروسافت نوشته شده اند!

1. استفاده از Close پیش فرض

var messageDialog = new MessageDialog("You have a new message.");
await messageDialog.ShowAsync();

در خط اول یک Message Dialog ساخته خواهد شد و مقدار دهی می شود.

در خط دوم نیز با استفاده از تابع ShowAsync نمایش داده خواهد شد. کلمه کلیدی await به معنای منتظر ماندن جهت نتیجه پیغام خواهد بود. به این صورت که در صورتی که کدی بعد از آن نوشته باشید اجرا نخواهد شد. این کلمه کلیدی الزامی است.


نکته ای که باید بدانید این است که بخاطر استفاده از await لازم است تابع مربوطه به صورت Async تعریف شده باشد. یه عنوان مثال در رویداد کلیک یک Button بین دو Private و Void باید عبارت Async را اضافه کنید.

نمونه:

private async void button_Click(object sender, RoutedEventArgs e)
{
....
}


نحوه اجرای حالت 1 را در Desktop و Mobile مشاهده می کنید.



2. استفاده از Cancel

// Create the message dialog and set its content
var messageDialog = new MessageDialog("No internet connection has been found.");

// Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers
messageDialog.Commands.Add(new UICommand("Try again", new UICommandInvokedHandler(this.CommandInvokedHandler)));
messageDialog.Commands.Add(new UICommand("Close", new UICommandInvokedHandler(this.CommandInvokedHandler)));

// Set the command that will be invoked by default
messageDialog.DefaultCommandIndex = 0;

// Set the command to be invoked when escape is pressed
messageDialog.CancelCommandIndex = 1;

// Show the message dialog
await messageDialog.ShowAsync();

در این حالت بخصوص در خط 5 و 6 همان طور که مشاهده می کنید. دو کلید به نام های "Try again" و "Close" تعریف شده اند. که هر کدام به یک Handler تخصیص داده شده اند. کد Handler را می توانید مشاهده کنید.

private void CommandInvokedHandler(IUICommand command)
{
...
}

در این حالت با استفاده از command می توانید رویداد را کنترل کنید. البته این تنها راه انجام این کار نیست. روش دیگری برای این کار وجود دارد.


در ادامه DefaultCommandIndex = 0 قرار داده شده است، اگر دقت کنید همان طوری که از نامش پیداست Index دکمه پیش فرضی که موقع اجرا انتخاب شود را تغیین می کند. در این حالت چون TryAgain زود تر تعریف شده است پس ایندکس ان 0 است پس این کلید انتخاب می شود و با فشار Enter توسط کاربر نیز انتخاب می شود.


CancelCommandIndex = 1 است که تعیین می کند که در صورتی که کاربر کلید Esc را فشار داد کدام رویداد اجرا شود.


ادامه به زودی ...