System.OutOfMemoryException在镜像控件中显示图像时

时间:2014-05-14 07:12:11

标签: windows-phone-8

我有一个带有数据控件的应用程序。我在动态绑定图片网址时出现内存异常。请帮我解决。提前付款

示例代码: 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}

1 个答案:

答案 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中的一个,则图像将以所需的大小和相同的宽高比进行解码。通过将它们都设置为一个值,您将以相同的比例解码所有图像。如果你有许多不同尺寸的图片,这将是有问题的。 我希望这能帮到您。