[英]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.