显示弹出窗口

Download Sample下载示例

显示警报、要求用户做出选择或显示提示都属于是常见的 UI 任务。 Xamarin.Forms 在 Page 类上有三个方法可以通过弹出项与用户交互:DisplayAlertDisplayActionSheetDisplayPromptAsync。 在每个平台上使用相应的本机控件呈现。

显示警报

所有 Xamarin.Forms 支持的平台都有一个模态弹出项,提醒用户或向用户提出简单的问题。 若要在 Xamarin.Forms 中显示这些警报,请对任何 Page 使用 DisplayAlert 方法。 以下代码行向用户显示一个简单的消息:

await DisplayAlert ("Alert", "You have been alerted", "OK");

Alert dialog with one button, on iOS and Android

本例不收集用户的信息。 警报以模式显示,一旦用户被解雇,就会继续与应用程序进行交互。

DisplayAlert 方法还可以通过显示两个按钮并返回 boolean 来捕获用户的响应。 要从警报中获得响应,请为两个按钮和 await 方法提供文本。 在用户选择其中一个选项后,答案将返回到你的代码。 注意下面示例代码中的 asyncawait 关键字:

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);
}

Alert dialog with two buttons

DisplayAlert 方法还包含接受 FlowDirection 参数的重载,该参数指定 UI 元素在警报中流动的方向。 有关流方向的详细信息,请参阅从右到左本地化

警告

默认情况下,在 UWP 上,当显示警报时,在警报后面的页面上定义的任何访问密钥仍可激活。 有关详细信息,请参阅 Windows 上的 VisualElement 访问键

指导用户完成任务

UIActionSheet 是 iOS 中的常见 UI 元素。 Xamarin.FormsDisplayActionSheet 方法可以在跨平台应用程序中包含此控件,并在 Android 和 UWP 中呈现本机备选方案。

要显示操作表(任何 Page 中的 awaitDisplayActionSheet),请将消息和按钮标签作为字符串传递。 该方法返回供用户单击的按钮的字符串标签。 下面是简单示例:

async void OnActionSheetSimpleClicked (object sender, EventArgs e)
{
  string action = await DisplayActionSheet ("ActionSheet: Send to?", "Cancel", null, "Email", "Twitter", "Facebook");
  Debug.WriteLine ("Action: " + action);
}

ActionSheet dialog, on iOS and Android

destroy 按钮的呈现方式与 iOS 上的其他按钮不同,可以保留 null 或指定为第三个字符串参数。 下面的示例使用 destroy 按钮:

async void OnActionSheetCancelDeleteClicked (object sender, EventArgs e)
{
  string action = await DisplayActionSheet ("ActionSheet: SavePhoto?", "Cancel", "Delete", "Photo Roll", "Email");
  Debug.WriteLine ("Action: " + action);
}

ActionSheet dialog with destroy button, on iOS and Android

DisplayActionSheet 方法还包含接受 FlowDirection 参数的重载,该参数指定 UI 元素在操作表中流动的方向。 有关流方向的详细信息,请参阅从右到左本地化

显示提示

若要显示提示,请在任何 Page 中调用 DisplayPromptAsync,将标题和消息作为 string 参数传递:

string result = await DisplayPromptAsync("Question 1", "What's your name?");

提示以模式方式显示:

Screenshot of a modal prompt, on iOS and Android

如果点击了“确定”按钮,则输入的响应将返回为 string。 如果点击了“取消”按钮,则返回 null

DisplayPromptAsync 方法的完整参数列表为:

  • title,类型为 string,表示要在提示中显示的标题。
  • message,类型为 string,表示要在提示中显示的消息。
  • accept,类型为 string,表示“接受”按钮的文本。 此参数是可选参数,其默认值为“确定”。
  • cancel,类型为 string,表示“取消”按钮的文本。 此参数是可选参数,其默认值为“取消”。
  • placeholder,类型为 string,表示要在提示中显示的占位符文本。 此参数是可选参数,其默认值为 null
  • maxLength,类型为 int,表示用户响应的最大长度。 此参数为可选参数,其默认值为 -1。
  • keyboard,类型为 Keyboard,是用于用户响应的键盘类型。 此参数是可选参数,其默认值为 Keyboard.Default
  • initialValue,类型为 string,表示将会显示并且可编辑的预定义响应。 此参数是可选参数,其默认值为空 string

以下示例演示了如何设置一些可选参数:

string result = await DisplayPromptAsync("Question 2", "What's 5 + 5?", initialValue: "10", maxLength: 2, keyboard: Keyboard.Numeric);

此代码显示预定义的响应 10,将可输入的字符数限制为 2,并显示数字键盘供用户输入:

Screenshot of an optional modal prompt, on iOS and Android

警告

默认情况下,在 UWP 上,当显示提示时,仍然可以激活在提示后面的页面上定义的任何访问键。 有关详细信息,请参阅 Windows 上的 VisualElement 访问键