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

如何在DisplayActionSheet中动态展示Terms列表并传参至编辑页面

问题描述

在ContentPage中使用CollectionView加载Terms类数据,已实现SelectionChanged事件处理可跳转至TermView查看选中Term对应的课程。现需实现编辑Term功能:通过DisplayActionSheet动态展示所有Term(因Term会动态增减,无法手动写死选项),选中后将termId传入EditTerms(termId)。已在SQLite数据库类中实现GetTerms()方法,需完成调用逻辑。

相关现有代码:

private async void termsCollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if(e.CurrentSelection != null)
    {
        Terms terms = (Terms)e.CurrentSelection.FirstOrDefault();
        await Navigation.PushAsync(new TermView(terms));
    }
}

private async void EditTerm_Clicked(object sender, EventArgs e)
{

}

public static async Task <IEnumerable<Terms>> GetTerms()
{
    await Init();

    var terms = await _db.Table<Terms>().ToListAsync();
    return terms;
}
解决方案

直接在EditTerm_Clicked方法中完成以下逻辑:

  1. 调用GetTerms()获取所有Term数据
  2. 将Term列表转换为DisplayActionSheet可用的选项文本数组,同时保留每个选项对应的termId
  3. 弹出ActionSheet,根据用户选中的选项匹配对应的termId,再调用EditTerms(termId)

完整实现代码如下:

private async void EditTerm_Clicked(object sender, EventArgs e)
{
    // 获取所有Term数据
    var allTerms = await GetTerms();
    if (!allTerms.Any())
    {
        await DisplayAlert("提示", "暂无可用Term", "确定");
        return;
    }

    // 构建选项列表和对应的termId映射(替换为你实际的属性名)
    var termOptions = allTerms.Select(t => t.TermName).ToArray();
    var termIdMap = allTerms.ToDictionary(t => t.TermName, t => t.TermId);

    // 显示ActionSheet
    var selectedTermName = await DisplayActionSheet("选择要编辑的Term", "取消", null, termOptions);
    
    // 处理选中结果
    if (!string.IsNullOrEmpty(selectedTermName) && selectedTermName != "取消")
    {
        if (termIdMap.TryGetValue(selectedTermName, out int termId))
        {
            EditTerms(termId);
        }
    }
}

关键说明

  • 替换代码中的TermName和TermId为你实际Terms类中对应的属性名称
  • 若存在Term名称重复的情况,建议用$"{term.TermId}-{term.TermName}"作为选项文本,避免映射错误
  • 增加空数据判断,避免无Term时弹出空的ActionSheet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:05:23