xamarin形式通知属性更改不与IOS的ListView工作
问题描述:
我有被显示在列表视图图像列表与一个按钮,允许用户通过詹姆斯montemagno使用xamarin媒体插件添加了照片列表xamarin形式通知属性更改不与IOS的ListView工作
列表XAML
<ListView ItemsSource="{Binding Images}"
x:Name="lsvImages"
HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Image Source="{Binding ImgSource}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
当图像被添加它保存为一个对象的字节数组。该对象添加到列表中,它激发了图像
PropertyChanged(this, new PropertyChangedEventArgs("Images"));
的通知属性更改事件这工作完全在android系统,拍照和列表更新预期。在IOS中,图像被创建添加到图像列表中,属性改变了事件激发,但是listview并没有更新,它甚至从来没有命中ImgSource的getter。如果我将Iphone翻转到风景并再次返回,它就可以工作。
我已经通过设置列表视图的项目源为空,然后再重新绑定它暂时固定,但我不知道为什么它的工作原理为Android而不是IOS。
答
使用ObservableCollection
而不是List
。 ObservableCollection实现INotifyCollectionChanged,因此它会自动通知ListView数据源中的任何添加或删除操作。
您是否尝试过使用ObservableCollection?这会在添加项目时自动更新ListView。 – Jason
@Jason如果您想发表它,我会接受它作为一个答案,但我仍然有兴趣知道为什么物业改变了工作这么努力在Android上而不是IOS – wolfman1001
不知道罚款,但它可能是由于一些潜在的ListView在每个平台上的实现方式有所不同。 – Jason