我在将可观察的集合绑定到Xamarin.iOS中的listview时遇到问题。我的代码在Android和UWP项目中有效,但在iOS(模拟器中)中无效。
我有一个包含4列的数据表,并且正在使用它创建简单的可观察集合:
DataTable dt = await CallWebServiceTemp(lines);
temperatureData = new ObservableCollection<object>();
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
temperatureData.Add(dt.Rows[i]);
}
}
else
{
//code to deal with that
}
OnPropertyChanged(nameof(Temperature));
此可观察的集合通过温度绑定到XAML中的ListView:
public ObservableCollection<object> Temperature
{
get { return temperatureData; }
set { temperatureData = value; }
}
像这样在XAML中创建Listview:
<ListView ItemsSource="{Binding Temperature}" FlexLayout.AlignSelf="Auto">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal" HorizontalOptions="Center">
<Label Text="{Binding ItemArray[0]}" HorizontalOptions="Center"/>
<Label Text="|" HorizontalOptions="Center"/>
<Label Text="{Binding ItemArray[1]}" HorizontalOptions="Center"/>
<Label Text="|" HorizontalOptions="Center"/>
<Label Text="{Binding ItemArray[2]}" HorizontalOptions="Center"/>
<Label Text="|" HorizontalOptions="Center"/>
<Label Text="{Binding ItemArray[3]}" HorizontalOptions="Center"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
现在,正如我之前说的,这在Andoird和UWP中可以正常使用,但在iOS中则不能。在这里,我在列表视图中得到了正确数量的项目,但是在标签中没有通过ItemArray传递的数据,它们为空。
很明显我缺少了一些东西。