无法找出从列表视图获取项目的正确方法。
我的 XAML 绑定:
<ListView x:Name="MyListView" ItemTapped="MyListView_ItemTapped" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding Name}"></Label>
<Label Text="{Binding Email}"></Label>
<Image Source="{Binding PhotoUrl}" WidthRequest="20" HeightRequest="20"></Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
所有数据都会显示并正常工作。类称为论坛:
[JsonProperty("results")]
public List<Result> Results { get; set; }
public class Result
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("photoUrl")]
public string PhotoUrl { get; set; }
}
我已经制作了MyListView_ItemTapped功能,现在,我正在尝试在点击该项目时显示其名称,但不确定正确的方法是什么。我总是认为我只是把一些随机的东西放在一起,直到我得到一些东西。
private void MyListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
var index = forums.Results.IndexOf(e.Item as Forums.Result);
DisplayAlert("Alert", forums.Results[index].Name, "OK");
}
因此,如果有人能指出我更好的方向,甚至给出一些更好的例子,或者只是解释应该如何做。
只需将 e.Item 转换为正确的类型
var item = e.Item as Forums.Result;
// then use item.Name, etc...
您还可以使用选定的项目属性 <ListView **SelectedItem="{Binding Result, Mode=TwoWay}">**
代码隐藏:
'私人结果_result;
public Result Result
{
get { return _deviceSession; }
set
{
SetProperty(ref _deviceSession, value);
}
}`
从这个类对象中,你可以获取所有数据
您可以投射到正确的类
private void MyListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
var index = forums.Results.IndexOf(e.Item as Forums.Result);
var selectedItem = (Forums.Result)e.Item;
if(selectedItem != null)
{
DisplayAlert("Alert", selected|Item.Name, "OK");
}
}
哦,如果你想删除选定的项目效果只是
if (sender is ListView lv) lv.SelectedItem = null;