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

Xamarin Forms中ListView的ViewCell如何通过MenuItem传递Person类数据到变量

解决方法:从MenuItem的BindingContext获取Person数据并打印

首先,先帮你指出代码里的一个小拼写错误:你写的BindingContex少了一个t,正确的是BindingContext,这是第一步要修正的。

接下来,因为你的MenuItem是绑定在列表项上的,它的BindingContext对应的就是列表里的单个Person对象,所以我们只需要把这个对象转换为Person类型,就能访问它的所有属性了。

修改后的点击事件代码如下:

private void MenuItem_Clicked_1(object sender, EventArgs e)
{
    var menuItem = sender as MenuItem;
    if (menuItem != null)
    {
        // 把BindingContext转换为Person实例,同时做空检查避免报错
        var selectedPerson = menuItem.BindingContext as Person;
        if (selectedPerson != null)
        {
            // 打印你需要的Person数据,这里我把所有属性都列出来了,你可以按需调整
            Console.WriteLine($"选中的Person信息:");
            Console.WriteLine($"ID: {selectedPerson.Id}");
            Console.WriteLine($"全名: {selectedPerson.Fullname}");
            Console.WriteLine($"详细信息: {selectedPerson.Details}");
            Console.WriteLine($"用户类型: {selectedPerson.UserType}");
            
            // 如果你想一次性打印,也可以这样写:
            // Console.WriteLine($"Person: ID={selectedPerson.Id}, Name={selectedPerson.Fullname}, Details={selectedPerson.Details}, UserType={selectedPerson.UserType}");
        }
        else
        {
            Console.WriteLine("未能获取到有效的Person数据");
        }
    }
}

额外注意事项

要确保你的列表控件(比如ListView)已经正确绑定了persons列表作为数据源,这样每个列表项的BindingContext才会关联到对应的Person对象:

  • 如果是用XAML绑定:
<ListView ItemsSource="{Binding persons}">
    <!-- 这里是你的列表项模板,包含MenuItem的定义 -->
</ListView>
  • 如果是用代码绑定:
// 假设你的ListView控件名为myListView
myListView.ItemsSource = persons;

这样调整之后,当你点击MenuItem时,就能正确获取到对应的Person对象并打印它的数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:20:09