从列表视图xamarin中的Label获取值



我从firebase实时数据库中获取一个id密钥,然后将其绑定到listview中作为label.text

我想做的是将label.text中的这个idkey分配为字符串变量,并在将来的XML.CS页面中使用这个字符串变量。

当试图将其分配为字符串时,它无法识别其x:标签的名称

XML代码

<StackLayout>    
<ListView x:Name="xListView" ItemsSource="{Binding xlist}" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal" Padding="5">

<StackLayout HorizontalOptions="StartAndExpand">

<Label x:Name="entryvalue" Text="{Binding Id}" FontSize="Medium"/>

</StackLayout>

</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>

XML CS代码

protected override async void OnAppearing()
{
var xlist = await GetAlles();          
xListView.ItemsSource = xlist;
//Tries to assing value to string variable
string getentryvalue = entryvalue.Text;
}

从XML CS文件中的数据库函数获取全部

public async Task<List<xModel>> GetAlles()
{

return (await firebaseClient.Child(nameof(xModel)).OnceAsync<xModel>()).Select(item => new xModel
{

Id = item.Key
}).ToList();

}

和类

public class xModel
{

public string Id { get; set; }
}

就像评论所说的那样,你把这件事复杂化了很多。

您的xlist变量已包含所有id。

要获得特定的id,你只需要做一些类似的事情

var id = xlist[0].Id;

为了更深入地了解不适合您的答案,您不能在ListView或CollectionView中按x:name访问XAML元素。由于每个项目都使用相同的模板,当您说entryvalue时,代码应该如何知道您想要哪个模板?

最新更新