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

如何让Community Toolkit Popup保留用户选择并复用实例?

保留Community Toolkit Popup实例并复用选择状态的解决方案

问题根源

你当前的代码每次点击按钮都会创建一个全新的PopUpCreation实例,导致之前的Picker选择状态完全丢失。要保留选择状态,核心是复用同一个Popup实例,而非每次创建新对象。

解决方案步骤

1. 在父页面中声明Popup实例变量

在包含ButtonAbilityScores按钮的页面类中,添加一个私有成员变量来持久化Popup实例:

// 父页面类中的私有变量
private PopUpCreation _abilityScoresPopup;

2. 修改按钮点击事件逻辑

修改点击事件处理代码,仅在首次点击时创建Popup实例,后续点击直接复用已存在的实例:

private void ButtonAbilityScores_Clicked(object sender, EventArgs e)
{        
    // 仅当实例未创建时初始化
    if (_abilityScoresPopup == null)
    {
        _abilityScoresPopup = new PopUpCreation(_LocalizationResourceManager, Player);
    }
    
    // 复用已有的Popup实例显示
    _ = this.ShowPopupAsync(_abilityScoresPopup);
}

3. 确保Popup内部状态保留

你的PopUpCreation构造函数中已经完成了Picker的创建和配置,这部分代码无需修改。因为Popup实例被复用,Picker的SelectedIndex等状态会自动保留,下次弹窗显示时会直接展示之前的选择结果。

额外注意事项

  • 如果后续需要更新Popup依赖的Player对象,可以在PopUpCreation中添加一个公共方法来刷新数据:
    public void RefreshPlayerData(Character updatedPlayer)
    {
        // 这里添加更新Popup内控件或逻辑的代码
    }
    
    调用时只需在父页面执行:
    _abilityScoresPopup.RefreshPlayerData(newPlayerInstance);
    
  • 避免在Popup关闭时手动销毁内部控件或调用Dispose方法,否则会导致状态丢失。

内容的提问来源于stack exchange,提问作者ForumWarrior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:18