我在Carousel视图中使用以下代码。我有图像,如果用户更改图像,它将保持WebURI不变。以下是UI流程。 1-用户转到个人资料 2-从个人资料,用户可以选择进入图像页面,用户可以在其中添加图像。用户添加图像时,将使用相同的WebURI保存到服务器。 3-现在,用户返回到“个人资料”页面。即使我在页面的外观上回忆起API并再次添加图片,它也会显示相同的图像。
实际上我正在使用FFImageLoading,但我也尝试使用简单的Image控件。
使用FFImageLoading
<StackLayout Orientation="Vertical" VerticalOptions="Center">
<forms:CarouselView x:Name="MainCarosel" ItemsSource="{Binding Pictures}" Position="{Binding Position}" IsVisible="{Binding IsImageVisible}" RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent, Property=Width}" HeightRequest="375">
<forms:CarouselView.ItemTemplate>
<DataTemplate>
<ff:CachedImage Source="{Binding .}" CacheDuration="0" Aspect="AspectFill" RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent, Property=Width}" HeightRequest="375">
</ff:CachedImage>
</DataTemplate>
</forms:CarouselView.ItemTemplate>
</forms:CarouselView>
<local:CarouselIndicators IsVisible="{Binding IsImageIndicatorVisible}" Margin="0,-30,0,0" IndicatorHeight="8" IndicatorWidth="8" UnselectedIndicator="icon_dot_off" SelectedIndicator="icon_dot_on" Position="{Binding Position}" ItemsSource="{Binding Pictures}" />
</StackLayout>
使用简单的图片
<StackLayout Orientation="Vertical" VerticalOptions="Center">
<forms:CarouselView x:Name="MainCarosel" ItemsSource="{Binding Pictures}" Position="{Binding Position}" IsVisible="{Binding IsImageVisible}" RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent, Property=Width}" HeightRequest="375">
<forms:CarouselView.ItemTemplate>
<DataTemplate>
<Image Aspect="AspectFill" RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent, Property=Width}" HeightRequest="375">
<Image.Source>
<UriImageSource Uri="{Binding .}"
CachingEnabled="false"/>
</Image.Source>
</Image>
</DataTemplate>
</forms:CarouselView.ItemTemplate>
</forms:CarouselView>
<local:CarouselIndicators IsVisible="{Binding IsImageIndicatorVisible}" Margin="0,-30,0,0" IndicatorHeight="8" IndicatorWidth="8" UnselectedIndicator="icon_dot_off" SelectedIndicator="icon_dot_on" Position="{Binding Position}" ItemsSource="{Binding Pictures}" />
</StackLayout>
ViewModel
public async Task Appearing()
{
await getAllData();
}
private async Task getAllData()
{
ProfileData Profile = GetProfile(); //API Call
Pictures = new List<string>();
//One Way binding with control
Pictures = Profile.Pictures.Select(t => t.Value).ToList();
}