Community Toolkit Maui Popup含Entry控件时点击外部崩溃求助
解决方案
方案1:关闭弹窗前手动移除Entry焦点
这类崩溃通常是弹窗关闭时Entry的焦点未正确释放导致的,可在弹窗关闭前主动让Entry失去焦点:
// 在自定义Popup类中重写OnClosing方法 protected override void OnClosing(CommunityToolkit.Maui.Views.PopupClosingEventArgs e) { // 假设弹窗内的Entry控件名为MyEntry MyEntry?.Unfocus(); base.OnClosing(e); }
或者在触发弹窗关闭的外部逻辑中先处理焦点:
var targetPopup = (你的自定义Popup类型)CurrentPage.Popup; targetPopup.MyEntry?.Unfocus(); await CurrentPage.ClosePopupAsync();
方案2:禁用外部点击关闭,改用按钮手动关闭
如果业务允许,可以关闭弹窗的外部点击关闭功能,改用自定义按钮触发关闭:
<!-- 在Popup的XAML中设置 --> <toolkit:Popup IsLightDismissEnabled="False"> <!-- 弹窗内容,包含Entry控件 --> <Button Text="关闭弹窗" Clicked="CloseBtn_Clicked"/> </toolkit:Popup>
然后实现按钮点击事件:
private async void CloseBtn_Clicked(object sender, EventArgs e) { await this.CloseAsync(); }
方案3:升级Community Toolkit Maui版本
该问题可能是工具包的已知焦点处理bug,尝试升级到最新稳定版本,此类问题在新版本中大概率已被修复。可通过项目的NuGet包管理器搜索CommunityToolkit.Maui并更新至最新版。
内容的提问来源于stack exchange,提问作者Haimo
相关产品推荐
相关产品推荐

