xamarin表单通知属性已更改,无法使用IOS listview

时间:2017-04-10 12:40:45

标签: c# ios xamarin.forms

我有一个列表视图中显示的图像列表,其中包含一个按钮,允许用户使用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。

1 个答案:

答案 0 :(得分:0)

使用GetParam()代替ObservableCollection。 ObservableCollection实现了INotifyCollectionChanged,因此它会自动通知ListView数据源的任何添加或删除。