Xamarin Forms的ListView第一次不呈现ffimageloadingsvg:SvgCachedImage

时间:2018-07-25 21:51:39

标签: svg xamarin.forms ffimageloading xamarin.forms.listview

问题从我启动应用程序的那一刻开始出现。

主页包含ffimageloadingsvg:SvgCachedImage元素的两列列表视图,它们的作用类似于按钮。

我将url字符串绑定到ffimageloadingsvg:SvgCachedImage元素,因此我不应该将图像下载到应用程序。图片可能会改变。

数据绑定工作得很好,问题在于ffimageloadingsvg:SvgCachedImage元素直到我开始导航并返回主页或旋转设备后才呈现。

所以我有这段代码:

False

在视图模型代码中,我仅使用一个变量进行数据绑定,一个变量填充了列表视图。

<ListView AbsoluteLayout.LayoutBounds="0,1,1,0.94" AbsoluteLayout.LayoutFlags="All"
                      ItemsSource="{Binding ModelPairs}" HasUnevenRows="True"
                      SeparatorVisibility="None" SelectionMode="None">
                 <!--BindingContext here is ModelPair, which has Item1 and Item2--> 
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                             <!--Two-column grid-->
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>

                                 <!--Left column - BindingContext set to ModelPair.Item1-->
                                <ffimageloadingsvg:SvgCachedImage  Grid.Column="0"
                                    Margin="5" Aspect="AspectFit" CacheType="All"
                                    BindingContext="{Binding Item1}" Source="{Binding ImgSvg}">
                                    <ffimageloadingsvg:SvgCachedImage.Transformations>
                                        <fftransformations:CornersTransformation 
                                            CornersTransformType="AllRounded"      
                                            BottomLeftCornerSize="15" BottomRightCornerSize="15"
                                            TopLeftCornerSize="15" TopRightCornerSize="15"
                                        />
                                    </ffimageloadingsvg:SvgCachedImage.Transformations>
                                </ffimageloadingsvg:SvgCachedImage>
                                <customs:CustomLabelRenderer Grid.Column="0"
                                    BindingContext="{Binding Item1}" Text="{Binding Title}"
                                    Style="{StaticResource LblOuterLayout}" VerticalOptions="Center"
                                    HorizontalOptions="Center" HorizontalTextAlignment="Center"
                                    VerticalTextAlignment="Center"/>


                                 <!--Right column - BindingContext set to ModelPair.Item2-->
                                <ffimageloadingsvg:SvgCachedImage   Grid.Column="1"
                                    Margin="5" Aspect="AspectFit" CacheType="All"
                                    BindingContext="{Binding Item2}" Source="{Binding ImgSvg}">
                                    <ffimageloadingsvg:SvgCachedImage.Transformations>
                                        <fftransformations:CornersTransformation 
                                            CornersTransformType="AllRounded"      
                                            BottomLeftCornerSize="15" BottomRightCornerSize="15"
                                            TopLeftCornerSize="15" TopRightCornerSize="15"
                                        />
                                    </ffimageloadingsvg:SvgCachedImage.Transformations>
                                    <ffimageloadingsvg:SvgCachedImage.Triggers>
                                        <DataTrigger TargetType="ffimageloadingsvg:SvgCachedImage"
                                            Binding="{Binding Id}" Value="-1">
                                            <Setter Property="IsVisible" Value="False"/>
                                        </DataTrigger>
                                    </ffimageloadingsvg:SvgCachedImage.Triggers>
                                </ffimageloadingsvg:SvgCachedImage>
                                <customs:CustomLabelRenderer  Grid.Column="1"
                                    BindingContext="{Binding Item2}" Text="{Binding Title}"
                                    Style="{StaticResource LblOuterLayout}" VerticalOptions="Center"
                                    HorizontalOptions="Center" HorizontalTextAlignment="Center"
                                    VerticalTextAlignment="Center">
                                    <customs:CustomLabelRenderer.Triggers>
                                        <DataTrigger TargetType="customs:CustomLabelRenderer"
                                            Binding="{Binding Id}" Value="-1">
                                            <Setter Property="IsVisible" Value="False"/>
                                        </DataTrigger>
                                    </customs:CustomLabelRenderer.Triggers>
                                </customs:CustomLabelRenderer>
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

开始时,图像看起来非常小,但让我们谈谈我正在旋转设备,并按原样渲染!按照正常大小,我已经放入网格的单元格中。

因此,我需要以启动应用程序时的方式渲染SVG。

谢谢!

0 个答案:

没有答案