DisplayAlert是最轻量的原生弹窗方式,用于显示标题、消息和按钮;支持单按钮无返回值或双按钮返回bool,但不支持输入框、多选项、自定义样式等高级功能。

MAUI 显示弹窗和提示,最常用、最轻量的方式就是 DisplayAlert —— 它不是自定义弹窗,而是调用各平台原生的系统级警报框(Android 的 AlertDialog、iOS 的 UIAlertController、Windows 的 ContentDialog),所以体验一致、无需额外适配。
DisplayAlert 基本用法
它属于 Page 类的方法,任何继承自 ContentPage 的页面都能直接调用。最简形式只需三个字符串参数:
- 标题(Title):比如
"提示" - 消息内容(Message):比如
"操作已成功" - 确认按钮文本(Accept):比如
"确定"
示例代码:
await DisplayAlert("提示", "操作已成功", "确定");
执行后弹出单按钮提示框,点击“确定”即关闭,不返回值。
带选择响应的双按钮用法
如果需要用户做判断(如“确定/取消”),传入两个按钮文本,方法会返回 bool:
- 用户点左边按钮 → 返回
true - 用户点右边按钮 → 返回
false
示例:
bool confirmed = await DisplayAlert("删除确认", "确定要删除这条记录吗?", "删除", "取消");
if (confirmed)
{
// 执行删除逻辑
}
注意:按钮顺序固定为左→右,且不支持重命名“取消”行为(比如不能让“取消”在左边)。
平台行为与注意事项
虽然 API 统一,但底层交互因平台而异,开发时需留意:
- Android:可点击弹窗外区域关闭弹窗(除非禁用,但 DisplayAlert 本身不提供该开关)
- iOS:无外部点击关闭,必须点按钮
- Windows:按 Esc 可关闭;若页面含访问键(Access Key),弹窗期间仍可能被意外触发(需手动处理)
- 所有平台:弹窗是模态的,会阻塞当前页面交互,直到关闭
DisplayAlert 不适合做什么
它不是万能弹窗,有明确边界:
- ❌ 不能加输入框(要用
DisplayPromptAsync) - ❌ 不能列多个操作项(要用
DisplayActionSheet) - ❌ 不能自定义样式、图标、布局或动画
- ❌ 不能嵌入复杂控件(如 Switch、DatePicker)
需要这些能力?请转向 MAUI Community Toolkit 的 Popup 或自定义 ContentView + ShowPopupAsync。
基本上就这些。DisplayAlert 简单直接,适合确认、提醒、错误反馈等轻量交互场景,用对地方就很稳。










