Xamarin 列表视图获取所选项目



无法找出从列表视图获取项目的正确方法。

我的 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;

最新更新