2017-06-15 5 views
1

Ich verwende FFImageLoading anstelle von Image in meinem Projekt für erweiterte Funktionen wie Platzhalter. In meinem Projekt gibt es eine Liste mit Bildern, die angezeigt werden müssen. Also benutze ich eine Listenansicht für dasselbe.So löschen/vermeiden Sie das Zwischenspeichern im Listenelement image - Xamain.Forms

<ListView x:Name="membersList" ItemTapped="Handle_ItemTappedMember" HorizontalOptions="FillAndExpand" HasUnevenRows="true" SeparatorVisibility="None" BackgroundColor="#EEEEEE" Grid.Row="0" Grid.Column="0"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <ViewCell.View> 
          <StackLayout Orientation="Horizontal" Padding="5,5,5,5" HeightRequest="75" Margin="10,5,10,5" BackgroundColor="White" HorizontalOptions="FillAndExpand"> 
           <ffimageloading:CachedImage Source="{Binding imageUrl}" x:Name="patImage" WidthRequest="60" HeightRequest="60" Aspect="AspectFill" VerticalOptions="Center"> 
            <ffimageloading:CachedImage.Transformations> 
             <fftransformations:CircleTransformation /> 
            </ffimageloading:CachedImage.Transformations> 
           </ffimageloading:CachedImage> 
           <StackLayout Spacing="3" Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="FillAndExpand"> 
            <Label FontAttributes="Bold" FontSize="14" TextColor="#212121" Text="{Binding FullName}" /> 
            <Label FontSize="12" TextColor="#212121" Text="{Binding Relation}" /> 
            <Label FontSize="12" TextColor="#212121" Text="{Binding Pat_ID}" /> 
           </StackLayout> 
          </StackLayout> 
         </ViewCell.View> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

Mein Problem ist, dass ich möchte, ohne die URL ändern geändert werden nicht Caching-Techniken hier, da mein Bild vom Server verwenden.

Ich weiß, wie eine einzelne Bild Ansicht des Cache mit FFImageLoading

await CachedImage.InvalidateCache(Image.Source, CacheType.All, true); 

Aber wie klar in Listview um dies zu erreichen? Ich verwende Binding-Eigenschaft, um Bilder hier zu laden.

+0

Können Sie nicht einfach die 'CacheDuration' -Eigenschaft auf 0 oder -1 oder etwas? –

+0

Lassen Sie mich das überprüfen, bereits mit 0 versucht, aber bisher kein Glück –

+0

@GeraldVersluis 0 & -1 funktioniert nicht –

Antwort

1

Nach einiger Zeit zu verbringen auf dem gleichen, ich habe meine Probleme klären. Am Ende war es sehr einfach. In meiner Listenansicht Binding-Modell-Klasse, beim Setzen der imageUrl habe ich Cache gleichzeitig mit dieser URL gelöscht.

private string mImageUrl { get; set; } 
public string imageUrl 
{ 
get{ 
    return mImageUrl; 
    }; 
set{ 
    mImageUrl = value; 
    await CachedImage.InvalidateCache(mImageUrl, CacheType.All, true); 
    }; 
} 

Dadurch wird das zwischengespeicherte Bild mit diesem imageUrl als Schlüssel gelöscht. Vielen Dank für Ihre Unterstützung. Happy coding :)

Verwandte Themen