显示弹出窗口
显示警报、要求用户做出选择或显示提示都属于是常见的 UI 任务。 Xamarin.Forms 在 Page
类上有三个方法可以通过弹出项与用户交互:DisplayAlert
、DisplayActionSheet
、DisplayPromptAsync
。 在每个平台上使用相应的本机控件呈现。
显示警报
所有 Xamarin.Forms 支持的平台都有一个模态弹出项,提醒用户或向用户提出简单的问题。 若要在 Xamarin.Forms 中显示这些警报,请对任何 Page
使用 DisplayAlert
方法。 以下代码行向用户显示一个简单的消息:
await DisplayAlert ("Alert", "You have been alerted", "OK");
本例不收集用户的信息。 警报以模式显示,一旦用户被解雇,就会继续与应用程序进行交互。
DisplayAlert
方法还可以通过显示两个按钮并返回 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
方法还包含接受 FlowDirection
参数的重载,该参数指定 UI 元素在警报中流动的方向。 有关流方向的详细信息,请参阅从右到左本地化。
警告
默认情况下,在 UWP 上,当显示警报时,在警报后面的页面上定义的任何访问密钥仍可激活。 有关详细信息,请参阅 Windows 上的 VisualElement 访问键。
指导用户完成任务
UIActionSheet 是 iOS 中的常见 UI 元素。 Xamarin.FormsDisplayActionSheet
方法可以在跨平台应用程序中包含此控件,并在 Android 和 UWP 中呈现本机备选方案。
若要显示操作表, await
DisplayActionSheet
请以 Page
字符串的形式传递消息和按钮标签。 该方法返回供用户单击的按钮的字符串标签。 下面是简单示例:
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
或指定为第三个字符串参数。 下面的示例使用 destroy
按钮:
async void OnActionSheetCancelDeleteClicked (object sender, EventArgs e)
{
string action = await DisplayActionSheet ("ActionSheet: SavePhoto?", "Cancel", "Delete", "Photo Roll", "Email");
Debug.WriteLine ("Action: " + action);
}
DisplayActionSheet
方法还包含接受 FlowDirection
参数的重载,该参数指定 UI 元素在操作表中流动的方向。 有关流方向的详细信息,请参阅从右到左本地化。
显示提示
若要显示提示,请在任何 Page
中调用 DisplayPromptAsync
,将标题和消息作为 string
参数传递:
string result = await DisplayPromptAsync("Question 1", "What's your name?");
提示以模式方式显示:
如果点击了“确定”按钮,则输入的响应将返回为 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,并显示数字键盘供用户输入:
警告
默认情况下,在 UWP 上,当显示提示时,仍然可以激活在提示后面的页面上定义的任何访问键。 有关详细信息,请参阅 Windows 上的 VisualElement 访问键。