Пол из Ткань здесь. В настоящее время Beta поддерживает только развертывание развертывания по времени. Приятно знать, что вам понравится, если бы это было добавлено, хотя!
В итоге я принял совет Г. Хакима и решил использовать FFImageLoading (через пакет NuGet) для изображений. Это было довольно просто, хотя мне пришлось использовать немного более старую версию для Xamarin.Android. Некоторая странная ошибка компоновщика возникает в последней версии (2.4.4.859) и должна была вернуться к 2.4.1. В любом случае это работает очень хорошо и даже добавляет небольшую анимацию к изображениям в Xamarin.iOS.
Вот мой код раньше:
<Image
HeightRequest="130"
Aspect="AspectFill"
Source="{Binding DynamicOfferImage}"
local:ImageBinding.URL="{Binding DynamicOfferURL}"
AbsoluteLayout.LayoutBounds="1,1,1,1"
AbsoluteLayout.LayoutFlags="All">
<Image.Aspect>
<OnPlatform x:TypeArguments="Aspect">
<On Platform="iOS">AspectFit</On>
<On Platform="Android">AspectFit</On>
</OnPlatform>
</Image.Aspect>
<Image.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnImageTapGestureRecognized"
NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
Чтобы заставить работать FFImageLoading, вы должны добавить это к корневому элементу <ContentPage>
:
xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
xmlns:fftransformations="clr-namespace:FFImageLoading.Transformations;assembly=FFImageLoading.Transformations"
Тогда я был в состоянии сделать это:
<ffimageloading:CachedImage
AbsoluteLayout.LayoutBounds="1,1,1,1"
AbsoluteLayout.LayoutFlags="All"
HeightRequest="130"
DownsampleToViewSize="true"
Source="{Binding DynamicOfferImage}"
local:ViewBinding.URL="{Binding DynamicOfferURL}">
<ffimageloading:CachedImage.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnViewTapGestureRecognized"
NumberOfTapsRequired="1" />
</ffimageloading:CachedImage.GestureRecognizers>
</ffimageloading:CachedImage>
Чтобы он работал с моим TapGestureRecognizer
, я изменил приведение ((Image)sender)
в методе на приведение ((View)sender)
, потому что класс CachedImage
в FFImageLoading не фактически не наследуют от Image
, а наследуют от View
. О чем следует помнить, если у вас есть жесты или даже пользовательские привязки.
Кроме того, это очень подключи и играй, и я очень доволен результатом.