MessageDialog ではなく ContentDialog を使用します。これにより、ダイアログのカスタマイズも可能になるため、非常にクレイジーなことをしたい場合を除き、カスタム コントロールを記述する必要はありません。
Windows では MessageDialog はキャンセル可能ですが、Windows Phone ではキャンセルできません。
// Cancel the MessageDialog after 3 seconds on Windows
private async void Button_Click(object sender, RoutedEventArgs e)
{
MessageDialog md = new MessageDialog("Lorem ipsum dolor sit amet","Message Dialog Title");
var t = md.ShowAsync();
await Task.Delay(TimeSpan.FromSeconds(3));
// Ignored by the Windows Phone MessageDialog
t.Cancel();
}
Windows Phone で同様のコードを使用して ContentDialog をキャンセルできます。必要に応じて、Visual Studio の ContentDialog テンプレートを使用してカスタム ContentDialog を作成できます。
private async void Button_Click(object sender, RoutedEventArgs e)
{
ContentDialog cd = new ContentDialog();
cd.Title = "Content Dialog";
cd.PrimaryButtonText = "Close";
cd.Content = "Lorem ipsum dolor sit amet";
var t = cd.ShowAsync();
await Task.Delay(TimeSpan.FromSeconds(3));
t.Cancel();
}