MAUI登录页采用ContentPage+ViewModel+绑定实现跨平台界面与逻辑分离;XAML用VerticalStackLayout布局,绑定Username/Password属性及LoginCommand;ViewModel中处理验证、异步登录、错误提示;辅以键盘适配、回车触发等细节优化。
MAUI 实现登录页面,核心是用 ContentPage 搭建界面 + ViewModel 处理逻辑 + 绑定(Binding) 连接视图与数据。不依赖第三方 UI 框架也能做出简洁、响应式、跨平台的登录页。
在 LoginPage.xaml 中用垂直堆叠布局放置输入框和按钮,适配各平台尺寸:
VerticalStackLayout 管理控件顺序,设置 S
pacing 和 Padding 提升可读性Entry 设置 Placeholder(如“用户名”)、Text 绑定到 ViewModel 属性,并开启 IsPassword="True" 用于密码框Button 的 Command 绑定到 ViewModel 中的登录命令,禁用状态靠 CanExecute 控制ActivityIndicator 显示加载中状态,IsRunning 绑定到 ViewModel 的布尔属性遵循 MVVM,把用户名、密码、登录动作、错误提示都放在 LoginViewModel.cs:
string Username { get; set; } 和 string Password { get; set; },并调用 OnPropertyChanged() 触发 UI 更新ICommand LoginCommand { get; } 封装登录操作,构造时传入异步执行方法(比如调用 API)IsBusy = true,成功跳转主页或失败弹提示(用 Application.Current.MainPage = new AppShell() 或 Shell.Current.GoToAsync("//home"))string ErrorMessage { get; set; } + 绑定到 Label,比弹窗更轻量不需要复杂库,几行代码就能做基础防护:
LoginCommand 的 CanExecute 里判断:!string.IsNullOrWhiteSpace(Username) && !string.IsNullOrWhiteSpace(Password)
Username = Password = ""
Entry 加 Completed="OnPasswordCompleted",后台代码中调用 LoginCommand.Execute(null)
Preferences.Set("remember_user", Username),启动时预填(注意别存密码明文)同一套 XAML 在 iOS/Android/Windows 表现略有差异,微调提升体验:
ScrollView 包住整个内容,或监听 SoftInputChanged 动态调整 Margin
LoginPage 重写 OnBackButtonPressed() 返回登录页或忽略Entry 自动全选文字?加 SelectionLength="0" 防止误删16,标题用 FontAttributes="Bold",比硬编码像素更可靠基本上就这些。MAUI 登录页不复杂但容易忽略绑定更新、异步阻塞、键盘遮挡这些细节。写完跑一遍 Android 和 iOS 模拟器,再补两处适配,就能稳稳上线。