2015-04-22 92 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> 

而且我得到了一个转换器的基础上盘

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(); 
    } 
} 

的URL的ImageSource或者,如果有一个更好的办法来做到这一点,完美的我”所有的耳朵。

+0

不同于论坛的网站,我们不使用对[堆栈溢出(HTTP“谢谢”,或者“任何帮助表示赞赏”,或签名://计算器。 COM /)。见[“应该'嗨','谢谢''标语和祝福从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 从 - 个)”。顺便说一句,它是“提前致谢”,而不是“先进感谢”。 –

+0

好的。感谢那些建议。 – BlaShadow

回答

0

还有其他更好的方法来实现这一点,但不冻结的UI你可以实现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

相关问题