c# - 为什么使用 MessagingCenter 将数据从数据库从 iOS 项目传递到 MainPage 时 ListView.ItemSource 为空 - Xamarin
问题描述
我想将包含数据库中的数据的列表从 iOS 项目传递到主页(主项目)并希望ListView
使用MessagingCenter
从 iOS 项目中,CustomMapRenderer.cs
我使用此方法将数据发送到主项目中的主页:
CustomPin GetCustomPin(MKPointAnnotation annotation)
{
var position = new Position(annotation.Coordinate.Latitude, annotation.Coordinate.Longitude);
foreach (var pin in customPins)
{
if (pin.Position == position)
{
int mapCode = int.Parse(pin.CodeNum.ToString());
var result = DataBaseConnection(mapCode);
MessagingCenter.Send<object, IEnumerable<AlertLevel>>(this, "PinSelected", result);
return pin;
}
}
return null;
}
并result
充满了数据:
在MainPage.cs
我尝试使用以下代码接收数据:
public void MarkerPressed()
{
MessagingCenter.Subscribe<object, IEnumerable<AlertLevel>>(this, "PinSelected", (sender, arg) =>
{
lstLevel.ItemsSource = arg;
labelColumn1.IsVisible = true;
labelColumn2.IsVisible = true;
labelColumn3.IsVisible = true;
content.IsVisible = false;
});
}
但是lstLevel.ItemsSource = arg;
来空,我不知道为什么?
我ListView
的输入MainPage.xaml
是:
<ListView x:Name="lstLevel">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label HorizontalOptions="StartAndExpand"
Text="{Binding dateForecast, StringFormat='{0:dd.MM} - {0:hh\\:mmч.}'}"/>
<Image Source="{Binding levelForecast, Converter={StaticResource levelImage}}"
HorizontalOptions="StartAndExpand"/>
<Label HorizontalOptions="StartAndExpand"
Text="{Binding levelForecast}"
HorizontalTextAlignment="Center"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这种方式在Android
项目上运行良好,但在 iOS 中我不知道为什么arg
会ListView
出现 null ?
如何将数据从 iOS 项目传递到我ListView
的 inMainPage
?
解决方案
推荐阅读
- python - 运行 manage.py 命令时如何解决回溯问题?
- flutter - 我怎样才能使这种类型的滑块颤动?
- python - 如何将 ploygon.io REST API 数据带入数据框
- c# - 使用空属性名反序列化 JSON
- javascript - 如何通过类名和特定数据集值查询SelectorAll?
- google-chrome - 如何在空手道 UI 测试中启用 acceptInsecureCerts
- nginx - Nginx 不传递 NodeJS 服务器的响应标头
- ansible - Ansible:通过 hostvars[inventory_hostname].host_name 总结节点任务结果
- redis - 如何在前端获取 socket.on 函数?事件被触发和处理。我正在使用 socket.io、NodeJS 服务器和 Redis.io
- r - 克里格中的“CRS 对象有注释,在输出中丢失”