微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Forms中加载图像时的回调

如何解决Xamarin Forms中加载图像时的回调

我有Xamarin表单的Listview。列表中每个单元格的内容是文本和一个或多个图像。我搜索一种方法来检测单元格中的所有内容何时完成加载。我的想法是使用Image的IsLoading属性图片来源是网址url。

这是加载图像列表的FlexLayout的代码

 <FlexLayout  AlignContent="Center" AlignItems="Center" Direction="Row" JustifyContent="Center" Wrap="Wrap"  VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" x:Name="media"   Grid.Row="1"  Margin="0,10,10" BindableLayout.ItemsSource="{Binding Media}">

        <BindableLayout.ItemTemplate>
                    <DataTemplate>

                              <Image x:Name="img" Source ="{Binding Url}" HeightRequest="{Binding ListHeigth}" WidthRequest="{Binding ListWidth}"  Aspect="AspectFit" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />

                    </DataTemplate>
        </BindableLayout.ItemTemplate>
 </FlexLayout>

我还没有找到使用XAML绑定IsLoading属性方法。作为列表,我不知道如何在每个元素中使用此属性

img.PropertyChanged += (sender,args) =>
        {
            if (args.PropertyName == "IsLoading")
            {
                //do somink
            }
        };

Xaml中的IsLoading属性如何绑定?还是有其他回调来检测单元格的所有内容已加载?

非常感谢。

解决方法

我还没有找到使用XAML绑定IsLoading属性的方法。

IsLoading仅具有get方法,而没有set方法,因此您不能直接在XAML中添加绑定。

enter image description here

因此,我建议您使用FFImageLoading来实现。

如果您要检测image何时完成加载。您可以实现Finish事件

  <ffimageloading:CachedImage 
            Finish="CachedImage_Finish"
            HorizontalOptions="Center" VerticalOptions="Center"
            WidthRequest="300" HeightRequest="300"
            DownsampleToViewSize="true"
            Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg">
            </ffimageloading:CachedImage>

这是完成事件背景代码。

  private void CachedImage_Finish(object sender,FFImageLoading.Forms.CachedImageEvents.FinishEventArgs e)
        {
           
        }

如果使用MVVM,则还使用FinishCommand,然后在ViewModel中绑定命令。

如果要在加载时显示加载图像,可以设置 LoadingPlaceholder = "loading.png",这里是类似的线程。

Image Loading Event

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。