当前位置: 移动技术网 > IT编程>移动开发>WP > Windows Phone Pivot 模拟 滑动Image Viewer 出现 0x8000ffff 异常

Windows Phone Pivot 模拟 滑动Image Viewer 出现 0x8000ffff 异常

2018年09月29日  | 移动技术网IT编程  | 我要评论

短毛猫,冷艳黑道女皇,米易二手房网

简介:

  app有多张图片需要展示,打算做一个 类似于 “图片”里面可以滑动的 图片展示页面。

  实现的方式有很多。选个简单的,直接用pivot来模拟。

 

问题:

  过程中出现了:0x8000ffff 异常!!!

     我将 observablecollection<uri> 绑定到 itemtemplete,并且设置itemsource时候

引发0x8000ffff 异常。完全没有头绪。

 

 

使用的代码:

 

代码如下:

数据

[csharp]  

private observablecollection<uri> _imageuris;  

  

       public observablecollection<uri> imageuris  

       {  

           get { return _imageuris; }  

           set  

           {  

               if (_imageuris != value)  

               {  

                   _imageuris = value;  

                   raisepropertychanged("imageuris");  

               }  

           }  

       }  

 

加载数据

[csharp]  

protected override void onnavigatedto(navigationeventargs e)  

        {  

            base.onnavigatedto(e);  

            umengsdk.umenganalytics.onpagestart("imageviewerpage");  

  

            if (phoneapplicationservice.current.state.containskey("images"))  

            {  

                object list;  

                if (phoneapplicationservice.current.state.trygetvalue("images", out list))  

                {  

                      

                    imageuris = list as observablecollection<uri>;   

                }  

            }  

         pivot.itemsource = imageuris;  

}  

 

xaml 

[html]  

<controls:pivot title="查看图片"  

                name="pivot" >  

    <controls:pivot.itemtemplate>  

        <datatemplate >  

            <image source="{binding}" />  

        </datatemplate>  

    </controls:pivot.itemtemplate>  

      

    <controls:pivot.headertemplate>  

        <datatemplate >  

            <grid>  

                <textblock margin="0,0,1,0"  

                           textwrapping="wrap"  

                           d:layoutoverrides="width, height" />  

            </grid>  

        </datatemplate>  

    </controls:pivot.headertemplate>  

</controls:pivot>  

 

 

 

解决问题:

 

1.找了2 3个小时,开始以为是staticsresources的问题。网上有说法是绑定名字出错,但是经过检查,

没有错误!

 

2.然后找到这个文章

https://www.nachmore.com/2010/silverlight-why-do-i-get-0x8000ffff-when-using-writeablebitmap-on-an-element/

silverlight: why do i get 0x8000ffff when using writeablebitmap on an element

 

大概是讲:强迫去render看不到的控件,会仆街。

按照这个思路,我觉得应该讲bitmapimage加载了,再绑定。

 

3.那就先将bitmapimage下载来咯,webclient??好像不太好

我找到这个方案:

https://blog.csdn.net/moxiaomomo/article/details/7907054

 

延迟加载bitmapimage

 

c# 改成这样:

 

[csharp]  

public observablecollection<bitmapimage> images { get; set; }   

  

protected override void onnavigatedto(navigationeventargs e)  

       {  

           base.onnavigatedto(e);  

           umengsdk.umenganalytics.onpagestart("imageviewerpage");  

  

           if (phoneapplicationservice.current.state.containskey("images"))  

           {  

               object list;  

               if (phoneapplicationservice.current.state.trygetvalue("images", out list))  

               {  

                     

                   imageuris = list as observablecollection<uri>;   

               }  

           }  

  

           images.clear();  

  

           foreach (var uri in imageuris)  

           {  

               bitmapimage bitmap = new bitmapimage();  

               bitmap.createoptions = bitmapcreateoptions.backgroundcreation;  

               // 当图片下载完成并解码成功时,会触发imageopened  

               bitmap.imageopened += (s, ex) =>  

               {  

                   // 添加到图片列表  

                   images.add(s as bitmapimage);   

               };  

               // uri为远程文件地址  

               bitmap.urisource = uri;   

           }  

  

  

           int index = int.parse(navigationcontext.querystring["index"]);  

           pivot.selectedindex = index;  

           pivot.itemssource = images;  

       }  

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网