我有一个列表视图中显示的图像列表,其中包含一个按钮,允许用户使用James montemagno的xamarin媒体插件将照片添加到列表中
列出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>
添加图像后,它将作为字节数组保存在对象中。该对象被添加到列表中并触发Images
的notify属性更改事件 PropertyChanged(this, new PropertyChangedEventArgs("Images"));
这在android中完美运行,拍照并按预期更新列表。在IOS中,图像被创建添加到图像列表中,属性更改事件触发但列表视图不更新,它甚至从未命中ImgSource的getter。如果我将Iphone翻转为横向并再次返回,则可以正常工作。
我已经通过将listview的items source设置为null然后再重新绑定它来暂时修复它但我不知道为什么它适用于android但不适用于IOS。
答案 0 :(得分:0)
使用GetParam()
代替ObservableCollection
。 ObservableCollection实现了INotifyCollectionChanged,因此它会自动通知ListView数据源的任何添加或删除。