Xamarin Forms中ListView的ViewCell如何通过MenuItem传递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
相关产品推荐
相关产品推荐

