A mini-app for retrieving RSS feeds and viewing articles, showing MVVM and design best practices. Users can specify the URL of a feed, view articles in a WebView control, and save favorite articles to local storage. This sample runs on the Universal Windows Platform (UWP).
Note: Features in this app are subject to change.
- The navigation menu (hamburger menu) pattern and screen-width adaptivity using the SplitView control and the AdaptiveTrigger class.
- The Syndication APIs (Windows.Web.Syndication) to retrieve RSS feed data.
- The DataContractSerializer class to save and restore app data from local storage.
- C# and XAML using the MVVM design pattern.
September 2016 update
This update includes:
- General cleanup, commenting, and refactoring for clarity.
- Improved error handling and performance.
- Fixes for several bugs related to layout, navigation, browser launch, and URL handling.
March 2016 update
This update includes:
- A complete redesign of the UI to show effective use of color, type, images, and animated effects.
- Major improvements to layout, navigation, and window-size adaptivity to support small and large screens.
- Use of the WebView control to show articles within the app.
- The ability to rename feeds and to rearrange feeds and favorites.
We implemented the navigation and layout patterns in this sample using code from the XAML navigation menu and XAML master/detail samples in the Windows-universal-samples repo. These samples represent the current minimum recommendations for these patterns, and the RssReader sample will continue to reflect this guidance in future updates.
Please report any bugs or suggestions on the Issues list. All feedback is welcome!
Code at a glance
If you're just interested in code snippets for certain API and don't want to browse or run the full sample, check out the following files for examples of some highlighted features:
- FeedView.xaml, AddFeedView.xaml,
EditFeedsView.xaml, and Styles.xaml
- Rich UI experiences and XAML resources for colors, templates, and animated effects.
- AppShell.xaml and AppShell.xaml.cs
- Adapted from the XAML navigation menu sample.
- Use of the SplitView control to implement a navigation menu with a hamburger button.
- Use of AdaptiveTrigger with VisualState.Setters and VisualStateManager to adjust the navigation menu depending on the current window width.
- Code that adjusts header margins depending on the state of the navigation menu and hamburger button.
- Keyboard support and Frame navigation.
- MasterDetailPage.xaml, MasterDetailPage.xaml.cs, DetailPage.xaml and DetailPage.xaml.cs
- FeedDataSource.cs and Serializer.cs
- Loading default feed data from the app package using StorageFile.GetFileFromApplicationUriAsync.
- Loading feed and article data from an RSS server using SyndicationClient.RetrieveFeedAsync.
- Loading and saving feed and favorites data to/from local storage using StorageFolder.TryGetItemAsync, StorageFolder.CreateFileAsync, and DataContractSerializer.
Universal Windows Platform development
This sample requires Visual Studio 2017 and the latest version of the Windows 10 SDK. You can use the free Visual Studio Community Edition to build and run Windows Universal Platform (UWP) apps.
To get the latest updates to Windows and the development tools, and to help shape their development, join the Windows Insider Program.
Running the sample
The default project is RssReader and you can Start Debugging (F5) or Start Without Debugging (Ctrl+F5) to try it out. The app will run in the emulator or on physical devices.
Note: This sample assumes you have an internet connection. Also, the platform target currently defaults to ARM, so be sure to change that to x64 or x86 if you want to test on a non-ARM device.