You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:35:13