page_type: sample
languages:
- csharp
products: - windows
- windows-uwp
statusNotificationTargets: - codefirst@microsoft.com
RssReader sample
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 - This sample is targeted and tested for Windows 10, version 1903 (10.0; Build 18362), and Visual Studio 2019. If you prefer, you can use project properties to retarget the project(s) to Windows 10, version 1809 (10.0; Build 17763), and/or open the sample with Visual Studio 2017.
Features
Note: Features in this app are subject to change.
RssReader demonstrates:
- 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- Adapted from the XAML master/detail sample.
- Code that adjusts the display of the articles list, the
WebView showing article content, and
the title-bar back button depending on the current window width.
- 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
Prerequisites
- Windows 10. Minimum: Windows 10, version 1809 (10.0; Build 17763), also known as the Windows 10 October 2018 Update.
- Windows 10 SDK. Minimum: Windows SDK version 10.0.17763.0 (Windows 10, version 1809).
- Visual Studio 2019 (or Visual Studio 2017). 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.