我有一个带有数据控件的应用程序。我在动态绑定图片网址时出现内存异常。请帮我解决。提前付款
示例代码: XAML
<phone:Pivot x:Name="PivotProductImages" Grid.Row="1" Margin="0,0,0,77" ItemsSource="{Binding ProductItems}" SelectionChanged="PivotProductImages_SelectionChanged" >
<phone:Pivot.ItemTemplate>
<DataTemplate >
<Image Source="{Binding ProductUrl}"></Image>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
C#
private ObservableCollection<string> objProductimg = new ObservableCollection<string>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
objProductimg.Add("http://media.testing.com/v2/images_content_split/12594/products_1853164_image1_original.jpg.ashx?quality=90');
objProductimg.Add("http://media.testing.com/v2/images_content_split/12594/products_1853164_image2_original.jpg.ashx?quality=90');
PivotProductImages.ItemsSource = ProductItems}
答案 0 :(得分:1)
如果您下载的图片太大,Windows Phone平台会为您提供以特定大小对其进行解码的机会。这样,即使您的图像为1800 x 1000,您也会在内存中保留相同的图像,但分辨率较低。
<phone:Pivot x:Name="PivotProductImages" Width="100" Grid.Row="1" Margin="0,0,0,77" ItemsSource="{Binding ProductItems}" SelectionChanged="PivotProductImages_SelectionChanged" >
<phone:Pivot.ItemTemplate>
<DataTemplate >
<Image>
<BitmapImage DecodePixelWidth="100" UriSource="{Binding ProductUrl}" \>
</Image>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
如果只设置DecodePixelWidth或DecodePixelHeight中的一个,则图像将以所需的大小和相同的宽高比进行解码。通过将它们都设置为一个值,您将以相同的比例解码所有图像。如果你有许多不同尺寸的图片,这将是有问题的。 我希望这能帮到您。