Windows 8 Developer Previewなので正式版とは異なる場合があります。 また、Windows Updateが走るときもあるため、エントリ執筆現在の情報をもとにかいています。
MetroStyleAppsにはMessageBoxはありません。
かわりにMessageDialogが存在します。
MessageDialog.Show()とか出来たらいいんですが、それではできなくてこんなふうにかきます。
<UserControl x:Class="Application19.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="1366"> <Grid x:Name="LayoutRoot" Background="Green"> <Button Content="MessageDialogButton" Click="Button_Click" HorizontalAlignment="Center"></Button> </Grid> </UserControl>
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Windows.Foundation; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; using Windows.UI.Popups; namespace Application19 { partial class MainPage { public MainPage() { InitializeComponent(); } private async void Button_Click(object sender, RoutedEventArgs e) { var md = new MessageDialog("Hello Metro"); await md.ShowAsync(); } } }
C#のコードからもわかるように、MessageDialogを使う場合は、private asyncとなります。
また、MessageDialog.ShowAsync()するまえにawaitを記述します。
これは、MessageDialogを表示する際に、後ろに表示してある画面を一旦ストップさせている(というかMessageDialogが割り込んで処理している)から、非同期の処理になるものだと思われます。
あとはusingに
using Windows.UI.Popups;
が追加されているのもポイントね!