繁体   English   中英

Xamarin Listview获取所选项目

[英]xamarin listview get selected item

无法找出从ListView获取项目的正确方法。

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

您可以投射到正确的班级

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");
        }

    }

哦,如果您要删除selecteditem效果,

if (sender is ListView lv) lv.SelectedItem = null;

您还可以使用选定的项目属性<ListView **SelectedItem="{Binding Result, Mode=TwoWay}">**

后面的代码:

`私有结果_result;

public Result Result
{
    get { return _deviceSession; }
    set
    {
        SetProperty(ref _deviceSession, value);
    }
}`

从此类对象中,您可以获取所有数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM