Converting Windows Phone to Windows 8: Listing 1

The WebClient class, which downloads the XML feed as a string.

public class MainPageViewModel
{
    public ObservableCollection<FlickrImage> FlickrImages { get; private set; }

    public MainPageViewModel()
    {
        FlickrImages = new ObservableCollection<FlickrImage>();
    }

    public void Load()
    {

        var wc = new WebClient();
        wc.DownloadStringCompleted += DownloadFlickrCompleted;
        wc.DownloadStringAsync(new Uri("http://api.flickr.com/services/feeds/photos_public.gne?format=xml&tags=wp7"));
    }

    private void DownloadFlickrCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            var xml = XElement.Parse(e.Result);

            var ns = XNamespace.Get("http://www.w3.org/2005/Atom");


            var images = (from entry in xml.Descendants(ns.GetName("entry"))
                            let title = entry.Element(ns.GetName("title"))

                            from links in entry.Descendants(ns.GetName("link"))
                            let rel=links.Attribute("rel")
                            where rel.Value == "enclosure"

                            let href = links.Attribute("href")
                            select new FlickrImage
                                        {
                                            ImageUrl = href.Value,
                                            Title = title.Value
                                        }).ToArray();

            foreach (var img in images)
            {
                FlickrImages.Add(img);
            }
        }
    }

    public class FlickrImage
    {
        public string ImageUrl { get; set; }
        public string Title { get; set; }
    }
}

About the Author

Nick Randolph runs Built to Roam, a consulting company that specializes in training, mentoring and assisting other companies build mobile applications. With a heritage in rich client applications for both the desktop and a variety of mobile platforms, Nick currently presents, writes and educates on the Windows Phone platform.

comments powered by Disqus

Featured

  • New Visual Studio Razor Editor 'Close to Being Ready' for Blazor and Other Projects

    The experimental Razor editor for Visual Studio introduced last summer has been updated and is "close to being ready for normal daily development."

  • Microsoft Updates 'Must Have' Xamarin Community Toolkit

    The Xamarin Community Toolkit provides all kinds of effects, views and helpers to complement mobile app development with Microsoft's recently released, open source, cross-platform Xamarin.Forms 5.

  • JetBrains Unveils Plans for WinForms, WPF and More in Rider .NET IDE

    JetBrains announced plans for Windows Forms, Windows Presentation Foundation (WPF), ASP.NET and more tooling in the next release of its popular Rider IDE for .NET development.

  • Multi-Class Classification Using PyTorch: Model Accuracy

    Dr. James McCaffrey of Microsoft Research continues his four-part series on multi-class classification, designed to predict a value that can be one of three or more possible discrete values, by explaining model accuracy.

Upcoming Events