Maui 显示弹出窗口

[删除(380066935@qq.com或微信通知)]

更好的阅读体验请查看原文:https://learn.microsoft.com/zh-cn/dotnet/maui/user-interface/pop-ups?view=net-maui-7.0

显示警报、要求用户做出选择或显示提示是一项常见的 UI 任务。 .NET 多平台应用 UI (.NET MAUI) 类上有 Page 三种方法,用于通过弹出窗口与用户交互: DisplayAlertDisplayActionSheetDisplayPromptAsync。 在每个平台上使用本机控件呈现弹出窗口。

显示警报

所有支持 .NET MAUI 的平台都有一个模式弹出窗口,用于提醒用户或提出简单的问题。 若要显示警报,请在 DisplayAlert 任何 Page上使用 方法。 以下示例向用户显示一条简单的消息:

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

警报以模式显示,消除后,用户将继续与应用交互:

带有一个按钮的警报对话框的屏幕截图。

DisplayAlert 方法还可以通过显示两个按钮并返回 bool 来捕获用户的响应。 若要从警报获取响应,请同时提供按钮和 await 方法的文本:

bool answer = await DisplayAlert("Question?", "Would you like to play a game", "Yes", "No");
Debug.WriteLine("Answer: " + answer);

具有两个按钮的警报对话框的屏幕截图。

用户选择其中一个选项后,响应将作为 bool返回。

方法 DisplayAlert 还具有接受参数的重载 FlowDirection ,该参数指定 UI 元素在警报中的流动方向。

指导用户完成任务

操作表向用户提供一组有关如何继续执行任务的替代项。 若要显示操作工作表,请在 DisplayActionSheet 任何 Page上使用 方法,将消息和按钮标签作为字符串传递:

string action = await DisplayActionSheet("ActionSheet: Send to?", "Cancel", null, "Email", "Twitter", "Facebook");
Debug.WriteLine("Action: " + action);

操作表将以模式方式显示:

操作表对话框的屏幕截图。

用户点击其中一个按钮后,按钮标签将作为 string返回。

操作表还支持销毁按钮,该按钮表示破坏性行为。 销毁按钮可以指定为 方法的第三个 DisplayActionSheet 字符串参数,也可以保留 null。 以下示例指定销毁按钮:

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

带有销毁按钮的操作表的屏幕截图。

注意

在 iOS 上,销毁按钮的呈现方式与操作表中的其他按钮不同。

方法 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为 ,是接受按钮的文本。 这是一个可选参数,其默认值为 OK。
  • cancel,类型 string为 ,是取消按钮的文本。 这是一个可选参数,其默认值为 Cancel。
  • 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,并显示用户输入的数字键盘:

可选模式提示的屏幕截图。

将页面显示为弹出窗口

.NET MAUI 支持模式页面导航。 模式页面鼓励用户完成在任务完成或取消之前无法导航的自包含任务。 例如,若要将窗体显示为要求用户输入多个数据段的弹出窗口,请创建一个 ContentPage 包含窗体 UI 的 ,然后将其作为模式页面推送到导航堆栈上。 有关详细信息,请参阅 执行模式导航