簡體   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