.NET MAUI页面返回异常:未选Picker项时需双击返回
.NET MAUI Picker未选中时返回需双击的问题解决
问题原因
当Picker没有选中任何项时,在OnDisappearing中直接调用AchievedBenefitsForEmployee.Clear()会触发ViewModel的属性变更通知,引发UI状态刷新,干扰了页面的返回流程——第一次点击返回的事件被UI更新逻辑消耗,导致需要第二次点击才能完成页面跳转。而当Picker已有选中项时,集合Clear操作不会触发额外的异常UI状态,因此返回正常。
解决方案
方案1:仅在集合有元素时执行清除操作
修改OnDisappearing中的逻辑,判断集合是否包含元素,再执行清除,避免无意义的UI更新:
protected override void OnDisappearing() { base.OnDisappearing(); var employeeList = _adminAchievedBenefitsViewModel.AchievedBenefitsForEmployee; if (employeeList.Any()) { employeeList.Clear(); } }
方案2:调整清除时机,避免在OnDisappearing中操作集合
改用页面导航离开的事件(如NavigatingFrom)处理,避开UI生命周期的冲突:
// 在页面构造函数中注册导航事件 public APAchievedBenefits() { InitializeComponent(); NavigatingFrom += APAchievedBenefits_NavigatingFrom; } private void APAchievedBenefits_NavigatingFrom(object sender, NavigatingFromEventArgs e) { _adminAchievedBenefitsViewModel.AchievedBenefitsForEmployee.Clear(); }
方案3:优先重置选中项而非直接清除集合
如果集合需要保留(比如下次进入页面复用),可以只重置Picker绑定的SelectedItem属性,避免清除集合带来的UI波动:
protected override void OnDisappearing() { base.OnDisappearing(); // 假设ViewModel中有绑定Picker SelectedItem的属性 _adminAchievedBenefitsViewModel.SelectedEmployee = null; }
内容的提问来源于stack exchange,提问作者Samurai_Jack_Dev
相关产品推荐
相关产品推荐

