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

Xamarin Forms中ListView字典项点击后获取键值对的问题

解决Xamarin ListView绑定字典后获取选中项的键和值问题

嘿,我明白你现在遇到的困扰啦!你之前的问题出在类型转换的方向错了——当你把Dictionary<string, string>绑定到ListView时,ListView并不会把整个字典作为列表项,而是会遍历字典里的每一个KeyValuePair<string, string>,所以你选中的每一项都是一个单独的键值对对象,而不是整个字典。

你打印args.Item.GetType得到System.Collections.Generic.KeyValuePair2[System.String,System.String],这已经给了你明确的提示!之前你试图把它转成Dictionary<string, string>`,类型不匹配自然会得到null。

下面是修正后的代码,直接把选中项转为KeyValuePair<string, string>就能轻松获取键和值:

public async void OnSelectedLanguages(object obj, ItemTappedEventArgs args)
{
    // 先判断类型并转换
    if (args.Item is KeyValuePair<string, string> selectedLangPair)
    {
        string languageName = selectedLangPair.Key; // 对应你看到的"japan"
        string languageCode = selectedLangPair.Value; // 对应"ja"
        
        Console.WriteLine($"选中的语言:{languageName},代码:{languageCode}");
    }
}

如果你的项目使用的是较旧版本的C#,不支持模式匹配的话,可以用另一种写法:

public async void OnSelectedLanguages(object obj, ItemTappedEventArgs args)
{
    var selectedLangPair = args.Item as KeyValuePair<string, string>?;
    if (selectedLangPair.HasValue)
    {
        string languageName = selectedLangPair.Value.Key;
        string languageCode = selectedLangPair.Value.Value;
        
        Console.WriteLine($"lang key: {languageName}, value: {languageCode}");
    }
}

这样就能顺利把"japan"和"ja"存入对应的变量里啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:35:10