2015-04-22 2 views
0

Я работаю с listView, который имеет изображение на каждом элементе, это изображение извлекается с диска, но это изображение не обязательно не выходит.Загрузить изображение с диска Windows Phone 8.1 в виде списка?

Проблема возникает, когда изображение не выходит, его занимает слишком много времени, чтобы выбросить FileNotFoundException (на консоли), и он заморозит UI.

Мой список вид что-то вроде этого

<ListView 
    Name="TestLv" 
    ItemsSource="{Binding}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Imageview Source="{Binding Converter={StaticResource ImageConverter}}"/> 
     </DataTemplate> 
</ListView> 

И я получил конвертер для создания URL-адрес ImageSource на диске

class Image : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     var itemService = value as ClassItem; 

     if(someCondition){ 
      return .. //compose file system url 
     } 

     //return an static image 
     return .. 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Или, если есть лучший способ сделать это, совершенный I» все уши.

+0

В отличие от сайтов форума, мы не используем "Спасибо" или "Любая помощь приветствуется", или подписи на [Переполнение стека] (Http: // StackOverflow. ком /). См. [«Должны ли« Привет »,« спасибо », лозунги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -Удалена-от-сообщений)». Кстати, это «Спасибо заранее», а не «Спасибо в продвинутый». –

+0

ОК. Спасибо за эти советы. – BlaShadow

ответ

0

Есть и другие лучшие способы реализации этого, но для незамерзания пользовательского интерфейса вы можете реализовать asycn что-то вроде этого.

private async System.Threading.Tasks.Task<Image> LoadImageAsync(string imagename) 
    { 

     //Get Image from local storage... 
     return yourimage 
    } 

и ваш конвертер

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    var itemService = value as ClassItem; 

    if(someCondition){ 
     return LoadImageAsync(imagename); 
    } 

    //return an static image 
    return .. 
} 
+0

Я не могу этого сделать, если я это сделаю, мне нужно сменить конвертер на асинхронный метод, означающий, что интерфейс IValueConverter не будет реализован. – BlaShadow

Смежные вопросы