我从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
时,代码应该如何知道您想要哪个模板?