The component cannot be found. (Exception from HRESULT: 0x88982F50) when setting stream to bitmapimage in windows phone 8 app

0

I am trying to add an element in existing isolated folder in xml code:

    public void writeToXML(List<AppTile> appList)
    {
        // Write to the Isolated Storage
        XmlWriterSettings x_W_Settings = new XmlWriterSettings();
        x_W_Settings.Indent = true;
        using (IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!ISF.FileExists("config.xml"))
            {

                using (IsolatedStorageFileStream stream = ISF.OpenFile("config.xml", FileMode.CreateNew))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(List<AppTile>));
                    using (XmlWriter xmlWriter = XmlWriter.Create(stream, x_W_Settings))
                    {

                        serializer.Serialize(xmlWriter, appList);

                    }
                    stream.Close();
                }

            }
            else
            {

                string tileName = null;
                string url = null;
                string key = null;
                byte [] tilePic = null;
                XDocument loadedData;
                if (appList != null)
                {
                    foreach (AppTile app in appList)
                    {
                        tileName = app.TileName;
                        url = app.Url;
                        key = app.Key;
                        tilePic = app.TilePic;
                       // tilePic = Encoding.UTF8.GetString(app.TilePic,0,app.TilePic.Length);
                       // tilePic = Encoding.Unicode.GetString(app.TilePic,0,app.TilePic.Length);
                       // var writer = new BinaryWriter(tilePic);


                    }
                    using (Stream stream = ISF.OpenFile("config.xml", FileMode.Open, FileAccess.ReadWrite))
                    {

                        loadedData = XDocument.Load(stream);
                        var RootNode = new XElement("AppTile");

                        RootNode.Add(new XElement("TileName", tileName));
                        RootNode.Add(new XElement("Key", key));
                        RootNode.Add(new XElement("Url", url));
                        RootNode.Add(new XElement("TilePic", tilePic));

                        // Find Root Element And Descedents and Append New Node After That
                        var root = loadedData.Element("ArrayOfAppTile");
                        var rows = root.Descendants("AppTile");
                        var lastRow = rows.Last();
                        lastRow.AddAfterSelf(RootNode);
                    }

                    // Save To ISOconfig.xml File 
                    using (IsolatedStorageFileStream newStream = new IsolatedStorageFileStream("config.xml", FileMode.Create, ISF))
                    {
                        loadedData.Save(newStream);
                        newStream.Close();
                    }
                }

            }
        }
    }

while reading from xml i am using xmlWriter and deserialize it to get List when ever i am trying to acces the tilePic of AppTile type i am getting error :The component cannot be found. with the following code:: Image img = new Image();

                MemoryStream imgStream = new MemoryStream(NewApp.TilePic);//NewApp is AppTile type
                BitmapImage imgSource = new BitmapImage();
                imgSource.SetSource(imgStream);//here i get error
                img.Source = imgSource;

Its most likely with the TilePic i am saving is not formatted correctly to be retrieved.

Please Help!!

windows-phone-8
asked on Stack Overflow Nov 13, 2014 by user3207655

2 Answers

0

Why don't you use the SaveJpeg extension methodoogy in creating the byte array?

This one might help you!

Windows Phone - byte array to BitmapImage converter throws exception

answered on Stack Overflow Nov 14, 2014 by Kulasangar • edited May 23, 2017 by Community
0

solved the issue: while saving the byte array it is encoded to some format not recognizable while reading,So what i have done is saved it as a string.So the updated code is:

               else
              {
                string tileName = null;
                string url = null;
                string key = null;
                string tilePicString = null;

                XDocument loadedData;

                System.Windows.Media.Imaging.BitmapImage imgSource = new System.Windows.Media.Imaging.BitmapImage();
                if (appList != null)
                {
                    foreach (AppTile app in appList)
                    {
                        tileName = app.TileName;
                        url = app.Url;
                        key = app.Key;
                        //changed here
                        tilePicString = System.Convert.ToBase64String(app.TilePic);

                    }
                   //same code as above
answered on Stack Overflow Nov 17, 2014 by user3207655

User contributions licensed under CC BY-SA 3.0