2016-04-07 2 views
3

Он искал пример онлайн об этом, но, похоже, не может его найти. В принципе, я хотел бы использовать FFImageLoading: CachedImage в ListView, причем источник привязан к строке с URL-адресом, например. http://blah.com/image.jpg. Это то, что я пробовал до сих пор, но изображение не загружается.Использование FFImageLoading: CachedImage в ListView

<ListView IsVisible="true" ItemsSource="{x:Static local:viewmodel.TSViewModel.myArticles}">   
    <ListView.ItemTemplate > 
    <DataTemplate> 
     <ViewCell> 
     <ViewCell.View> 

      <StackLayout Orientation="Vertical"> 

      <ffimageloading:CachedImage 
        HorizontalOptions="Center" VerticalOptions="Center" 
        WidthRequest="95" HeightRequest="95" 
        DownsampleToViewSize="true" 
        Source = "{Binding ImageUrl}"> 
      </ffimageloading:CachedImage> 

      <Label Text="{Binding Title}" LineBreakMode="WordWrap" FontSize="Small"/> 

      </StackLayout> 

     </ViewCell.View> 
     </ViewCell> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Если есть что-то я делаю не так, или я просто не должен использовать его таким образом или есть лучшие альтернативы, пожалуйста, помогите мне. Кроме того, я новичок с форматами xamarin и mvvm. Любая помощь будет принята с благодарностью.

Обновление: изображения загружаются, но только один раз, когда я перехожу от страницы изображений к другой странице, а затем обратно на страницу изображений. Изображения загружаются на страницу содержимого на вкладке, поэтому, возможно, это связано с ней. Любые идеи о том, как их загрузить при первом открытии вкладки?

HomePage.xaml.cs

using TestApp.view; 
using Xamarin.Forms; 
using TestApp.database; 

namespace TestApp 
{ 
    public partial class HomePage : TabbedPage 
    { 
     public HomePage(TestAppDatabase db) 
     { 
      InitializeComponent(); 

      Children.Add(new Bakeries(db)); 
      Children.Add(new Bars()); 
      Children.Add(new Butcheries()); 
      Children.Add(new Restaurants()); 
      Children.Add(new Supermarkets()); 
      Children.Add(new Entertainment()); 
     } 

    } 
} 

Bakeries.xaml.cs

using System.Collections.Generic; 
using TestApp.model; 
using TestApp.database; 

using Xamarin.Forms; 

namespace TestApp.view 
{ 
    public partial class Bakeries : ContentPage 
    { 
     public Bakeries(TestApp db) 
     { 
      InitializeComponent(); 

      List<Eateries> bakeries = (List<Eateries>) db.GetBakeries(); 
      bakeriesList.ItemsSource = bakeries; 
     } 
    } 
} 
+0

Выглядит нормально. Что-то напечатано на выходе Debug? Вы можете открыть его через 'Debug> Windows> Output' –

+0

Спасибо за ваш ответ. Посмотрел вывод Debug, но ничего не связано с моей проблемой. Я попытался с представлением изображения и тем же результатом, ничего не происходит. Странно, потому что он работает, когда за пределами списка, просто не внутри - что-то мне не хватает? Я тестирую устройство Windows Phone 8.1, если это имеет значение – Nigel

+0

Пожалуйста, поделитесь своим файлом XAML CS, чтобы понять, что происходит за кулисами. – Korayem

ответ

3

В соответствии с API документации, расположенных здесь. https://github.com/molinch/FFImageLoading/wiki/Xamarin.Forms-API

Вы должны добавить эту строку в платформе конкретного проекта (AppDelegate.cs, M ainActivity.cs и т.д.), прежде чем использовать FFImageLoading:

CachedImageRenderer.Init(); 
+0

Спасибо за ваш ответ. Я уже добавил это. Он отлично работает, когда его нет в списке, как только я помещаю его в список, ничего не происходит. Я тестирую Windows-телефон, если это имеет значение. – Nigel

+0

@Nigel Я только заметил, что у вас есть тег . Это не должно быть. Ваша структура стека должна быть только внутри вашего представления. По крайней мере, согласно https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/customizing-cell-appearance/#Custom_Cells –

+0

Я удалил тег , но все тот же результат, изображение не загружается. Не знаю, что происходит в этот момент, и я был в этом часами. – Nigel