UI の一般的なタスクは、アラートを表示したり、ユーザーに選択を求めたり、プロンプトを表示することです。 Xamarin.Forms の Page クラスには、ポップアップを介してユーザーと対話するための 3 つのメソッド DisplayAlert、DisplayActionSheet、DisplayPromptAsync があります。 それらは適切なネイティブ コントロールを使用して、各プラットフォーム上に表示されます。
アラートを表示する
Xamarin.Forms でサポートされるすべてのプラットフォームには、ユーザーにアラートを表示したり、簡単な質問をしたりするための、モーダル ポップアップがあります。 Xamarin.Forms でこれらのアラートを表示するには、任意の Page 上で DisplayAlert メソッドを使います。 次のコード行は、ユーザーに簡単なメッセージを表示します。
await DisplayAlert ("Alert", "You have been alerted", "OK");
この例は、ユーザーから情報を収集しません。 アラートはモーダルとして表示され、一度無視するとユーザーは引き続きアプリケーションとやり取りできるようになります。
また、DisplayAlert メソッドは、2 つのボタンを表示して boolean を返すことで、ユーザーの応答をキャプチャするためにも使用できます。 アラートから応答を取得するには、両方のボタンにテキストを提供し、メソッドを await します。 ユーザーがオプションのいずれかを選択すると、コードに応答が返されます。 以下のサンプル コード内の async キーワードと await キーワードに注意してください。
async void OnAlertYesNoClicked (object sender, EventArgs e)
{
bool answer = await DisplayAlert ("Question?", "Would you like to play a game", "Yes", "No");
Debug.WriteLine ("Answer: " + answer);
}
DisplayAlert メソッドには、UI 要素がアラート内を流れる方向を指定する FlowDirection 引数を受け取るオーバーロードもあります。 フローの向きについて詳しくは、「右から左へのローカライズ」をご覧ください。
警告
UWP の既定では、アラートが表示されているときでも、アラートの背後にあるページで定義されているすべてのアクセス キーをアクティブにできます。 詳しくは、「Windows の VisualElement アクセス キー」をご覧ください。
タスクを通じたユーザーのガイド
UIActionSheet は、iOS の一般的な UI 要素です。 Xamarin.Forms の DisplayActionSheet メソッドを使うと、このコントロールをクロスプラットフォーム アプリに組み込み、Android と UWP でネイティブの代替アイテムをレンダリングできます。
アクション シートを表示するには、任意のPageでawait DisplayActionSheetし、メッセージとボタンのラベルを文字列として渡します。 そのメソッドは、ユーザーがクリックしたボタンの文字列ラベルを返します。 簡単な例を次に示します。
async void OnActionSheetSimpleClicked (object sender, EventArgs e)
{
string action = await DisplayActionSheet ("ActionSheet: Send to?", "Cancel", null, "Email", "Twitter", "Facebook");
Debug.WriteLine ("Action: " + action);
}
destroy ボタンのレンダリングは iOS の他のボタンと異なり、null のままにするか、3 つ目の文字列パラメーターとして指定することができます。 次の例では、destroy ボタンを使用します。
async void OnActionSheetCancelDeleteClicked (object sender, EventArgs e)
{
string action = await DisplayActionSheet ("ActionSheet: SavePhoto?", "Cancel", "Delete", "Photo Roll", "Email");
Debug.WriteLine ("Action: " + action);
}
DisplayActionSheet メソッドには、UI 要素がアクション シート内を流れる方向を指定する FlowDirection 引数を受け取るオーバーロードもあります。 フローの向きについて詳しくは、「右から左へのローカライズ」をご覧ください。
プロンプトの表示
プロンプトを表示するには、任意の Page で DisplayPromptAsync を呼び出し、タイトルとメッセージを string 引数で渡します。
string result = await DisplayPromptAsync("Question 1", "What's your name?");
プロンプトはモーダルで表示されます。
OK ボタンがタップされると、入力した応答が string として返されます。 キャンセル ボタンがタップされると、null が返されます。
DisplayPromptAsync メソッドの完全な引数リストは次のとおりです。
string型のtitleは、プロンプトに表示されるタイトルです。string型のmessageは、プロンプトに表示されるメッセージです。string型のacceptは、承認ボタンのテキストです。 この引数は省略可能であり、既定値は OK です。string型のcancelは、キャンセル ボタンのテキストです。 この引数は省略可能であり、既定値は Cancel です。string型のplaceholderは、プロンプトに表示するプレースホルダー テキストです。 この引数は省略可能であり、既定値はnullです。int型のmaxLengthは、ユーザー応答の最大長です。 この引数は省略可能であり、既定値は -1 です。Keyboard型のkeyboardは、ユーザーの応答に使用するキーボードのタイプです。 この引数は省略可能であり、既定値はKeyboard.Defaultです。string型のinitialValueは、表示し編集できる定義済みの応答です。 この引数は省略可能であり、既定値は空のstringです。
次の例は、いくつかの省略可能な引数を設定する方法を示しています。
string result = await DisplayPromptAsync("Question 2", "What's 5 + 5?", initialValue: "10", maxLength: 2, keyboard: Keyboard.Numeric);
このコードは、定義済みの応答 10 を表示し、入力できる文字数を 2 に制限し、ユーザー入力用の数値キーボードを表示します。
警告
UWP の既定では、プロンプトが表示されるときに、プロンプトの背後にあるページで定義されているすべてのアクセス キーをアクティブ化できます。 詳しくは、「Windows の VisualElement アクセス キー」をご覧ください。


![iOS および Android の [ActionSheet] ダイアログ](pop-ups-images/simple-actionsheet.png)
![iOS および Android 上の、[破棄] ボタンが表示された [ActionSheet] ダイアログ](pop-ups-images/actionsheet-destroy-button.png)

