Creating WP8 and WP81 directories for WindowsPhone projects
authorgu.martinm@gmail.com <gu.martinm@gmail.com>
Sun, 17 Aug 2014 10:41:05 +0000 (12:41 +0200)
committergu.martinm@gmail.com <gu.martinm@gmail.com>
Sun, 17 Aug 2014 10:41:05 +0000 (12:41 +0200)
400 files changed:
WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs [deleted file]
WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp.sln [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/AppBarSave.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/StateUtilities.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs [deleted file]
WindowsPhone/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp.sln [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/App.xaml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/MyFirstApp.csproj [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Properties/AppManifest.xml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs [deleted file]
WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.resx [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents.sln [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/App.xaml [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/App.xaml.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/LocalizedStrings.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/NLog.config [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/NLog.xsd [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Properties/AppManifest.xml [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/RemoteAgents.csproj [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.resx [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/View/View.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs [deleted file]
WindowsPhone/RemoteAgents/RemoteAgents/packages.config [deleted file]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame.sln [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Game1.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs [new file with mode: 0644]
WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp.sln [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/AppBarSave.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/StateUtilities.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp.sln [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/LocalizedStrings.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/MyFirstApp.csproj [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs [new file with mode: 0644]
WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.resx [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents.sln [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/LocalizedStrings.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.config [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.xsd [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/RemoteAgents.csproj [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.resx [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/View/View.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/RemoteAgents/RemoteAgents/packages.config [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation.sln [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/add.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/feature.settings.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear_night.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_fog.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_overcast.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_snow.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_storm.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/LocalizedStrings.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Location.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/WeatherData.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/README_FIRST.txt [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.resx [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/WeatherInformation.csproj [new file with mode: 0644]
WindowsPhone/WP8/WeatherInformation/WeatherInformation/packages.config [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test.sln [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/App.xaml [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/Logo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/SmallLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/SplashScreen.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/Square71x71Logo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/StoreLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Assets/WideLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Common/NavigationHelper.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Common/ObservableDictionary.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Common/ReadMe.txt [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Common/RelayCommand.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Common/SuspensionManager.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleData.json [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleDataSource.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Package.appxmanifest [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/Strings/es-ES/Resources.resw [new file with mode: 0644]
WindowsPhone/WP81/WP81test/WP81test/WP81test.csproj [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81.sln [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Logo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SmallLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SplashScreen.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Square71x71Logo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/StoreLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/WideLogo.scale-240.png [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/NavigationHelper.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ObservableDictionary.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ReadMe.txt [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/RelayCommand.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/SuspensionManager.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleData.json [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleDataSource.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Package.appxmanifest [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Properties/AssemblyInfo.cs [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Strings/en/Resources.resw [new file with mode: 0644]
WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/WeatherInformation81.csproj [new file with mode: 0644]
WindowsPhone/WeatherInformation/WeatherInformation.sln [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/App.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/App.xaml.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/add.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/feature.settings.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear_night.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_fog.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_overcast.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_snow.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_storm.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/LocalizedStrings.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/Location.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Model/WeatherData.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Properties/AppManifest.xml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/README_FIRST.txt [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.resx [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/WeatherInformation.csproj [deleted file]
WindowsPhone/WeatherInformation/WeatherInformation/packages.config [deleted file]

diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln b/WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln
deleted file mode 100644 (file)
index 2378ac3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connect4MonoGame", "Connect4MonoGame\Connect4MonoGame.csproj", "{1B061ADC-B891-4E69-B96A-E054C80333C0}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|ARM = Debug|ARM
-               Debug|x86 = Debug|x86
-               Release|ARM = Release|ARM
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.ActiveCfg = Debug|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Build.0 = Debug|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Deploy.0 = Debug|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.ActiveCfg = Debug|x86
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Build.0 = Debug|x86
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Deploy.0 = Debug|x86
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.ActiveCfg = Release|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Build.0 = Release|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Deploy.0 = Release|ARM
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.ActiveCfg = Release|x86
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Build.0 = Release|x86
-               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Deploy.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml
deleted file mode 100644 (file)
index a03ea47..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<Application
-    x:Class="Connect4MonoGame.App"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
-
-    <!--Application Resources-->
-    <Application.Resources>
-        <local:LocalizedStrings xmlns:local="clr-namespace:Connect4MonoGame" x:Key="LocalizedStrings"/>
-    </Application.Resources>
-
-    <Application.ApplicationLifetimeObjects>
-        <!--Required object that handles lifetime events for the application-->
-        <shell:PhoneApplicationService
-            Launching="Application_Launching" Closing="Application_Closing"
-            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
-    </Application.ApplicationLifetimeObjects>
-
-</Application>
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs
deleted file mode 100644 (file)
index 74b8d52..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Connect4MonoGame.Resources;
-
-namespace Connect4MonoGame
-{
-    public partial class App : Application
-    {
-        /// <summary>
-        /// Provides easy access to the root frame of the Phone Application.
-        /// </summary>
-        /// <returns>The root frame of the Phone Application.</returns>
-        public static PhoneApplicationFrame RootFrame { get; private set; }
-
-        /// <summary>
-        /// Constructor for the Application object.
-        /// </summary>
-        public App()
-        {
-            // Global handler for uncaught exceptions.
-            UnhandledException += Application_UnhandledException;
-
-            // Standard XAML initialization
-            InitializeComponent();
-
-            // Phone-specific initialization
-            InitializePhoneApplication();
-
-            // Language display initialization
-            InitializeLanguage();
-
-            // Show graphics profiling information while debugging.
-            if (Debugger.IsAttached)
-            {
-                // Display the current frame rate counters.
-                Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
-                // Show the areas of the app that are being redrawn in each frame.
-                //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
-                // Enable non-production analysis visualization mode,
-                // which shows areas of a page that are handed off to GPU with a colored overlay.
-                //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
-                // Prevent the screen from turning off while under the debugger by disabling
-                // the application's idle detection.
-                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
-                // and consume battery power when the user is not using the phone.
-                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
-            }
-
-        }
-
-        // Code to execute when the application is launching (eg, from Start)
-        // This code will not execute when the application is reactivated
-        private void Application_Launching(object sender, LaunchingEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is activated (brought to foreground)
-        // This code will not execute when the application is first launched
-        private void Application_Activated(object sender, ActivatedEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is deactivated (sent to background)
-        // This code will not execute when the application is closing
-        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is closing (eg, user hit Back)
-        // This code will not execute when the application is deactivated
-        private void Application_Closing(object sender, ClosingEventArgs e)
-        {
-        }
-
-        // Code to execute if a navigation fails
-        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // A navigation has failed; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        // Code to execute on Unhandled Exceptions
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // An unhandled exception has occurred; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        #region Phone application initialization
-
-        // Avoid double-initialization
-        private bool phoneApplicationInitialized = false;
-
-        // Do not add any additional code to this method
-        private void InitializePhoneApplication()
-        {
-            if (phoneApplicationInitialized)
-                return;
-
-            // Create the frame but don't set it as RootVisual yet; this allows the splash
-            // screen to remain active until the application is ready to render.
-            RootFrame = new PhoneApplicationFrame();
-            RootFrame.Navigated += CompleteInitializePhoneApplication;
-
-            // Handle navigation failures
-            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
-            // Handle reset requests for clearing the backstack
-            RootFrame.Navigated += CheckForResetNavigation;
-
-            // Ensure we don't initialize again
-            phoneApplicationInitialized = true;
-        }
-
-        // Do not add any additional code to this method
-        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
-        {
-            // Set the root visual to allow the application to render
-            if (RootVisual != RootFrame)
-                RootVisual = RootFrame;
-
-            // Remove this handler since it is no longer needed
-            RootFrame.Navigated -= CompleteInitializePhoneApplication;
-        }
-
-        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
-        {
-            // If the app has received a 'reset' navigation, then we need to check
-            // on the next navigation to see if the page stack should be reset
-            if (e.NavigationMode == NavigationMode.Reset)
-                RootFrame.Navigated += ClearBackStackAfterReset;
-        }
-
-        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
-        {
-            // Unregister the event so it doesn't get called again
-            RootFrame.Navigated -= ClearBackStackAfterReset;
-
-            // Only clear the stack for 'new' (forward) and 'refresh' navigations
-            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
-                return;
-
-            // For UI consistency, clear the entire page stack
-            while (RootFrame.RemoveBackEntry() != null)
-            {
-                ; // do nothing
-            }
-        }
-
-        #endregion
-
-        // Initialize the app's font and flow direction as defined in its localized resource strings.
-        //
-        // To ensure that the font of your application is aligned with its supported languages and that the
-        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
-        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
-        // file's culture. For example:
-        //
-        // AppResources.es-ES.resx
-        //    ResourceLanguage's value should be "es-ES"
-        //    ResourceFlowDirection's value should be "LeftToRight"
-        //
-        // AppResources.ar-SA.resx
-        //     ResourceLanguage's value should be "ar-SA"
-        //     ResourceFlowDirection's value should be "RightToLeft"
-        //
-        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
-        //
-        private void InitializeLanguage()
-        {
-            try
-            {
-                // Set the font to match the display language defined by the
-                // ResourceLanguage resource string for each supported language.
-                //
-                // Fall back to the font of the neutral language if the Display
-                // language of the phone is not supported.
-                //
-                // If a compiler error is hit then ResourceLanguage is missing from
-                // the resource file.
-                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
-                // Set the FlowDirection of all elements under the root frame based
-                // on the ResourceFlowDirection resource string for each
-                // supported language.
-                //
-                // If a compiler error is hit then ResourceFlowDirection is missing from
-                // the resource file.
-                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
-                RootFrame.FlowDirection = flow;
-            }
-            catch
-            {
-                // If an exception is caught here it is most likely due to either
-                // ResourceLangauge not being correctly set to a supported language
-                // code or ResourceFlowDirection is set to a value other than LeftToRight
-                // or RightToLeft.
-
-                if (Debugger.IsAttached)
-                {
-                    Debugger.Break();
-                }
-
-                throw;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png
deleted file mode 100644 (file)
index f7d2e97..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj
deleted file mode 100644 (file)
index eef48a4..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">ARM</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{1B061ADC-B891-4E69-B96A-E054C80333C0}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Connect4MonoGame</RootNamespace>
-    <AssemblyName>Connect4MonoGame</AssemblyName>
-    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
-    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <SilverlightApplication>true</SilverlightApplication>
-    <SupportedCultures>
-    </SupportedCultures>
-    <XapOutputs>true</XapOutputs>
-    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
-    <XapFilename>Connect4MonoGame_$(Configuration)_$(Platform).xap</XapFilename>
-    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
-    <SilverlightAppEntry>Connect4MonoGame.App</SilverlightAppEntry>
-    <ValidateXaml>true</ValidateXaml>
-    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\WindowsPhone\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\WindowsPhone\x86\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\WindowsPhone\ARM\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\WindowsPhone\ARM\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="LocalizedStrings.cs" />
-    <Compile Include="GamePage.xaml.cs">
-      <DependentUpon>GamePage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Game1.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources\AppResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.resx</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </ApplicationDefinition>
-    <Page Include="GamePage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Properties\AppManifest.xml" />
-    <None Include="Properties\WMAppManifest.xml">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Assets\AlignmentGrid.png" />
-    <Content Include="Assets\ApplicationIcon.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\blupiece.png" />
-    <Content Include="Content\redpiece.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\AppResources.resx">
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
-    <Reference Include="MonoGame.Framework, Version=3.1.2.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\MonoGame\MonoGame.Framework\bin\WindowsPhone\x86\Debug\MonoGame.Framework.dll</HintPath>
-      <EmbedInteropTypes>False</EmbedInteropTypes>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
-  <Target Name="MonoGame_RemoveXnaAssemblies" AfterTargets="ImplicitlyExpandTargetFramework">
-    <Message Text="MonoGame - Removing XNA Assembly references!" Importance="normal" />
-    <ItemGroup>
-      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.dll'" />
-      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServices.dll'" />
-      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServicesExtensions.dll'" />
-      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.Input.Touch.dll'" />
-      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.MediaLibraryExtensions.dll'" />
-    </ItemGroup>
-  </Target>
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions />
-</Project>
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png
deleted file mode 100644 (file)
index 4564d4c..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png
deleted file mode 100644 (file)
index b1224bd..0000000
Binary files a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png and /dev/null differ
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs
deleted file mode 100644 (file)
index 0dce598..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System.Windows;
-
-namespace Connect4MonoGame
-{
-    /// <summary>
-    /// This is the main type for your game
-    /// </summary>
-    public class Game1 : Game
-    {
-        GraphicsDeviceManager _graphics;
-        SpriteBatch _spriteBatch;
-        Texture2D texture;
-
-        public Game1()
-        {
-            _graphics = new GraphicsDeviceManager(this);
-            Content.RootDirectory = "Content";
-
-            _graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft;
-        }
-
-        /// <summary>
-        /// Allows the game to perform any initialization it needs to before starting to run.
-        /// This is where it can query for any required services and load any non-graphic
-        /// related content.  Calling base.Initialize will enumerate through any components
-        /// and initialize them as well.
-        /// </summary>
-        protected override void Initialize()
-        {
-            // TODO: Add your initialization logic here
-
-            base.Initialize();
-        }
-
-        /// <summary>
-        /// LoadContent will be called once per game and is the place to load
-        /// all of your content.
-        /// </summary>
-        protected override void LoadContent()
-        {
-            // Create a new SpriteBatch, which can be used to draw textures.
-            _spriteBatch = new SpriteBatch(GraphicsDevice);
-
-            //texture = new Texture2D(_spriteBatch.GraphicsDevice, 1, 1);
-            //texture.SetData<Color>(new Color[] { Color.Yellow });
-            texture = Content.Load<Texture2D>("redpiece.png");
-            
-
-            // TODO: use this.Content to load your game content here
-        }
-
-        /// <summary>
-        /// UnloadContent will be called once per game and is the place to unload
-        /// all content.
-        /// </summary>
-        protected override void UnloadContent()
-        {
-            // TODO: Unload any non ContentManager content here
-        }
-
-        /// <summary>
-        /// Allows the game to run logic such as updating the world,
-        /// checking for collisions, gathering input, and playing audio.
-        /// </summary>
-        /// <param name="gameTime">Provides a snapshot of timing values.</param>
-        protected override void Update(GameTime gameTime)
-        {
-            // TODO: Add your update logic here
-
-            base.Update(gameTime);
-        }
-
-        /// <summary>
-        /// This is called when the game should draw itself.
-        /// </summary>
-        /// <param name="gameTime">Provides a snapshot of timing values.</param>
-        protected override void Draw(GameTime gameTime)
-        {
-            GraphicsDevice.Clear(Color.CornflowerBlue);
-            
-            // TODO: Add your drawing code here
-            _spriteBatch.Begin();
-            _spriteBatch.Draw(texture, new Rectangle(120, 120, 300, 300), Color.Yellow);
-            _spriteBatch.End();
-            base.Draw(gameTime);
-            
-        }
-    }
-}
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml
deleted file mode 100644 (file)
index 6fe3197..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="Connect4MonoGame.GamePage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="Landscape" Orientation="Landscape"
-    shell:SystemTray.IsVisible="False">
-
-    <!--LayoutRoot is the root grid where all page content is placed-->
-    <DrawingSurfaceBackgroundGrid x:Name="XnaSurface" Background="Transparent">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition Height="*"/>
-        </Grid.RowDefinitions>
-
-        <!-- LOCALIZATION NOTE:
-            To localize the displayed strings copy their values to appropriately named
-            keys in the app's neutral language resource file (AppResources.resx) then
-            replace the hard-coded text value between the attributes' quotation marks
-            with the binding clause whose path points to that string name.
-
-            For example:
-
-                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
-
-            This binding points to the template's string resource named "ApplicationTitle".
-
-            Adding supported languages in the Project Properties tab will create a
-            new resx file per language that can carry the translated values of your
-            UI strings. The binding in these examples will cause the value of the
-            attributes to be drawn from the .resx file that matches the
-            CurrentUICulture of the app at run time.
-         -->
-
-        <!--TitlePanel contains the name of the application and page title-->
-        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
-            <TextBlock Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
-            <TextBlock Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
-        </StackPanel>
-
-        <!--ContentPanel - place additional content here-->
-        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-
-        </Grid>
-
-        <!--Uncomment to see an alignment grid to help ensure your controls are
-            aligned on common boundaries.  The image has a top margin of -32px to
-            account for the System Tray. Set this to 0 (or remove the margin altogether)
-            if the System Tray is hidden.
-
-            Before shipping remove this XAML and the image itself.-->
-        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
-    </DrawingSurfaceBackgroundGrid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs
deleted file mode 100644 (file)
index dc8b81e..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Microsoft.Xna.Framework;
-using MonoGame.Framework.WindowsPhone;
-using Connect4MonoGame.Resources;
-
-namespace Connect4MonoGame
-{
-    public partial class GamePage : PhoneApplicationPage
-    {
-        private Game1 _game;
-
-        // Constructor
-        public GamePage()
-        {
-            InitializeComponent();
-
-            _game = XamlGame<Game1>.Create("", XnaSurface);
-
-            // Sample code to localize the ApplicationBar
-            //BuildLocalizedApplicationBar();
-        }
-
-        // Sample code for building a localized ApplicationBar
-        //private void BuildLocalizedApplicationBar()
-        //{
-        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
-        //    ApplicationBar = new ApplicationBar();
-
-        //    // Create a new button and set the text value to the localized string from AppResources.
-        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
-        //    appBarButton.Text = AppResources.AppBarButtonText;
-        //    ApplicationBar.Buttons.Add(appBarButton);
-
-        //    // Create a new menu item with the localized string from AppResources.
-        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
-        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
-        //}
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs
deleted file mode 100644 (file)
index 8ac08f7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using Connect4MonoGame.Resources;
-
-namespace Connect4MonoGame
-{
-    /// <summary>
-    /// Provides access to string resources.
-    /// </summary>
-    public class LocalizedStrings
-    {
-        private static AppResources _localizedResources = new AppResources();
-
-        public AppResources LocalizedResources { get { return _localizedResources; } }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml
deleted file mode 100644 (file)
index 6712a11..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index c09b700..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Connect4MonoGame")]
-[assembly: AssemblyProduct("Connect4MonoGame")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("92d9cb94-79bd-41a2-9323-da24110f57eb")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index 69ebedb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="en-US"/>
-  <App xmlns="" ProductID="{f13744ce-a3b0-426b-8a4a-cf6f482b80cd}" Title="Connect4MonoGame" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="Connect4MonoGame author" Description="Sample description" Publisher="Connect4MonoGame" PublisherID="{0df4bf76-7146-42eb-ba7c-83daa7249a23}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING"/>
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
-      <Capability Name="ID_CAP_SENSORS"/>
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
-    </Capabilities>
-    <Tasks>
-      <DefaultTask  Name ="_default" NavigationPage="GamePage.xaml"/>
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="Connect4MonoGameToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>Connect4MonoGame</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
-    </ScreenResolutions>
-  </App>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs
deleted file mode 100644 (file)
index 241ac84..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17626
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Connect4MonoGame.Resources
-{
-    using System;
-
-
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    public class AppResources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal AppResources()
-        {
-        }
-
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if (object.ReferenceEquals(resourceMan, null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connect4MonoGame.Resources.AppResources", typeof(AppResources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to LeftToRight.
-        /// </summary>
-        public static string ResourceFlowDirection
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to us-EN.
-        /// </summary>
-        public static string ResourceLanguage
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to MY APPLICATION.
-        /// </summary>
-        public static string ApplicationTitle
-        {
-            get
-            {
-                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to button.
-        /// </summary>
-        public static string AppBarButtonText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to menu item.
-        /// </summary>
-        public static string AppBarMenuItemText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx
deleted file mode 100644 (file)
index 529a194..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>en-US</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>MY APPLICATION</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>add</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Menu Item</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp.sln b/WindowsPhone/MVVMTestApp/MVVMTestApp.sln
deleted file mode 100644 (file)
index 1934dd4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVMTestApp", "MVVMTestApp\MVVMTestApp.csproj", "{EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|ARM = Debug|ARM
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|ARM = Release|ARM
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.ActiveCfg = Debug|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.Build.0 = Debug|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.Deploy.0 = Debug|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.ActiveCfg = Debug|x86
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.Build.0 = Debug|x86
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.Deploy.0 = Debug|x86
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.Deploy.0 = Release|Any CPU
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.ActiveCfg = Release|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.Build.0 = Release|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.Deploy.0 = Release|ARM
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.ActiveCfg = Release|x86
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.Build.0 = Release|x86
-               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.Deploy.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml b/WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml
deleted file mode 100644 (file)
index 860c64f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<Application
-    x:Class="MVVMTestApp.App"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
-
-    <!--Application Resources-->
-    <Application.Resources>
-        <local:LocalizedStrings xmlns:local="clr-namespace:MVVMTestApp" x:Key="LocalizedStrings"/>
-    </Application.Resources>
-
-    <Application.ApplicationLifetimeObjects>
-        <!--Required object that handles lifetime events for the application-->
-        <shell:PhoneApplicationService
-            Launching="Application_Launching" Closing="Application_Closing"
-            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
-    </Application.ApplicationLifetimeObjects>
-
-</Application>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/App.xaml.cs
deleted file mode 100644 (file)
index bd5076b..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using MVVMTestApp.Resources;
-
-namespace MVVMTestApp
-{
-    public partial class App : Application
-    {
-        /// <summary>
-        /// Provides easy access to the root frame of the Phone Application.
-        /// </summary>
-        /// <returns>The root frame of the Phone Application.</returns>
-        public static PhoneApplicationFrame RootFrame { get; private set; }
-
-        /// <summary>
-        /// Constructor for the Application object.
-        /// </summary>
-        public App()
-        {
-            // Global handler for uncaught exceptions.
-            UnhandledException += Application_UnhandledException;
-
-            // Standard XAML initialization
-            InitializeComponent();
-
-            // Phone-specific initialization
-            InitializePhoneApplication();
-
-            // Language display initialization
-            InitializeLanguage();
-
-            // Show graphics profiling information while debugging.
-            if (Debugger.IsAttached)
-            {
-                // Display the current frame rate counters.
-                Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
-                // Show the areas of the app that are being redrawn in each frame.
-                //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
-                // Enable non-production analysis visualization mode,
-                // which shows areas of a page that are handed off to GPU with a colored overlay.
-                //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
-                // Prevent the screen from turning off while under the debugger by disabling
-                // the application's idle detection.
-                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
-                // and consume battery power when the user is not using the phone.
-                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
-            }
-
-        }
-
-        // Code to execute when the application is launching (eg, from Start)
-        // This code will not execute when the application is reactivated
-        private void Application_Launching(object sender, LaunchingEventArgs e)
-        {
-            StateUtilities.IsLaunching = true;
-        }
-
-        // Code to execute when the application is activated (brought to foreground)
-        // This code will not execute when the application is first launched
-        private void Application_Activated(object sender, ActivatedEventArgs e)
-        {
-            StateUtilities.IsLaunching = false;
-        }
-
-        // Code to execute when the application is deactivated (sent to background)
-        // This code will not execute when the application is closing
-        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is closing (eg, user hit Back)
-        // This code will not execute when the application is deactivated
-        private void Application_Closing(object sender, ClosingEventArgs e)
-        {
-        }
-
-        // Code to execute if a navigation fails
-        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // A navigation has failed; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        // Code to execute on Unhandled Exceptions
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // An unhandled exception has occurred; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        #region Phone application initialization
-
-        // Avoid double-initialization
-        private bool phoneApplicationInitialized = false;
-
-        // Do not add any additional code to this method
-        private void InitializePhoneApplication()
-        {
-            if (phoneApplicationInitialized)
-                return;
-
-            // Create the frame but don't set it as RootVisual yet; this allows the splash
-            // screen to remain active until the application is ready to render.
-            RootFrame = new PhoneApplicationFrame();
-            RootFrame.Navigated += CompleteInitializePhoneApplication;
-
-            // Handle navigation failures
-            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
-            // Handle reset requests for clearing the backstack
-            RootFrame.Navigated += CheckForResetNavigation;
-
-            // Ensure we don't initialize again
-            phoneApplicationInitialized = true;
-        }
-
-        // Do not add any additional code to this method
-        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
-        {
-            // Set the root visual to allow the application to render
-            if (RootVisual != RootFrame)
-                RootVisual = RootFrame;
-
-            // Remove this handler since it is no longer needed
-            RootFrame.Navigated -= CompleteInitializePhoneApplication;
-        }
-
-        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
-        {
-            // If the app has received a 'reset' navigation, then we need to check
-            // on the next navigation to see if the page stack should be reset
-            if (e.NavigationMode == NavigationMode.Reset)
-                RootFrame.Navigated += ClearBackStackAfterReset;
-        }
-
-        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
-        {
-            // Unregister the event so it doesn't get called again
-            RootFrame.Navigated -= ClearBackStackAfterReset;
-
-            // Only clear the stack for 'new' (forward) and 'refresh' navigations
-            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
-                return;
-
-            // For UI consistency, clear the entire page stack
-            while (RootFrame.RemoveBackEntry() != null)
-            {
-                ; // do nothing
-            }
-        }
-
-        #endregion
-
-        // Initialize the app's font and flow direction as defined in its localized resource strings.
-        //
-        // To ensure that the font of your application is aligned with its supported languages and that the
-        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
-        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
-        // file's culture. For example:
-        //
-        // AppResources.es-ES.resx
-        //    ResourceLanguage's value should be "es-ES"
-        //    ResourceFlowDirection's value should be "LeftToRight"
-        //
-        // AppResources.ar-SA.resx
-        //     ResourceLanguage's value should be "ar-SA"
-        //     ResourceFlowDirection's value should be "RightToLeft"
-        //
-        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
-        //
-        private void InitializeLanguage()
-        {
-            try
-            {
-                // Set the font to match the display language defined by the
-                // ResourceLanguage resource string for each supported language.
-                //
-                // Fall back to the font of the neutral language if the Display
-                // language of the phone is not supported.
-                //
-                // If a compiler error is hit then ResourceLanguage is missing from
-                // the resource file.
-                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
-                // Set the FlowDirection of all elements under the root frame based
-                // on the ResourceFlowDirection resource string for each
-                // supported language.
-                //
-                // If a compiler error is hit then ResourceFlowDirection is missing from
-                // the resource file.
-                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
-                RootFrame.FlowDirection = flow;
-            }
-            catch
-            {
-                // If an exception is caught here it is most likely due to either
-                // ResourceLangauge not being correctly set to a supported language
-                // code or ResourceFlowDirection is set to a value other than LeftToRight
-                // or RightToLeft.
-
-                if (Debugger.IsAttached)
-                {
-                    Debugger.Break();
-                }
-
-                throw;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/AppBarSave.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/AppBarSave.png
deleted file mode 100644 (file)
index 8e31a2a..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/AppBarSave.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png
deleted file mode 100644 (file)
index f7d2e97..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs
deleted file mode 100644 (file)
index cc539f1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using MVVMTestApp.Resources;
-
-namespace MVVMTestApp
-{
-    /// <summary>
-    /// Provides access to string resources.
-    /// </summary>
-    public class LocalizedStrings
-    {
-        private static AppResources _localizedResources = new AppResources();
-
-        public AppResources LocalizedResources { get { return _localizedResources; } }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj b/WindowsPhone/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj
deleted file mode 100644 (file)
index df5b852..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MVVMTestApp</RootNamespace>
-    <AssemblyName>MVVMTestApp</AssemblyName>
-    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
-    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <SilverlightApplication>true</SilverlightApplication>
-    <SupportedCultures>
-    </SupportedCultures>
-    <XapOutputs>true</XapOutputs>
-    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
-    <XapFilename>MVVMTestApp_$(Configuration)_$(Platform).xap</XapFilename>
-    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
-    <SilverlightAppEntry>MVVMTestApp.App</SilverlightAppEntry>
-    <ValidateXaml>true</ValidateXaml>
-    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\ARM\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\ARM\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="LocalizedStrings.cs" />
-    <Compile Include="MainPage.xaml.cs">
-      <DependentUpon>MainPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Model\Accomplishment.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources\AppResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="StateUtilities.cs" />
-    <Compile Include="ViewModel\ViewModel.cs" />
-    <Compile Include="View\ItemView.xaml.cs">
-      <DependentUpon>ItemView.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="View\LevelView.xaml.cs">
-      <DependentUpon>LevelView.xaml</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </ApplicationDefinition>
-    <Page Include="MainPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="View\ItemView.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="View\LevelView.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Properties\AppManifest.xml" />
-    <None Include="Properties\WMAppManifest.xml">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Assets\AlignmentGrid.png" />
-    <Content Include="Assets\ApplicationIcon.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="AppBarSave.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\AppResources.resx">
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions />
-</Project>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml b/WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml
deleted file mode 100644 (file)
index a941530..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="MVVMTestApp.MainPage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:views="clr-namespace:MVVMTestApp.View"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="Portrait" Orientation="Portrait"
-    shell:SystemTray.IsVisible="True">
-
-    <phone:PhoneApplicationPage.ApplicationBar>
-        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" >
-            <shell:ApplicationBarIconButton IconUri="AppBarSave.png" Text="Save"  Click="AppBarSave_Click" />
-        </shell:ApplicationBar>
-    </phone:PhoneApplicationPage.ApplicationBar>
-    
-    <!--LayoutRoot is the root grid where all page content is placed-->
-    <Grid x:Name="LayoutRoot" Background="Transparent">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition Height="*"/>
-        </Grid.RowDefinitions>
-
-        <!-- LOCALIZATION NOTE:
-            To localize the displayed strings copy their values to appropriately named
-            keys in the app's neutral language resource file (AppResources.resx) then
-            replace the hard-coded text value between the attributes' quotation marks
-            with the binding clause whose path points to that string name.
-
-            For example:
-
-                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
-
-            This binding points to the template's string resource named "ApplicationTitle".
-
-            Adding supported languages in the Project Properties tab will create a
-            new resx file per language that can carry the translated values of your
-            UI strings. The binding in these examples will cause the value of the
-            attributes to be drawn from the .resx file that matches the
-            CurrentUICulture of the app at run time.
-         -->
-
-        <!--TitlePanel contains the name of the application and page title-->
-        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
-            <TextBlock Text="MVVM Test App" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
-            <TextBlock Text="game tracker" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
-        </StackPanel>
-
-        <!--ContentPanel - place additional content here-->
-        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-            <StackPanel>
-                <TextBlock Text="Items Collected" Foreground="{StaticResource PhoneAccentBrush}" Style="{StaticResource PhoneTextLargeStyle}" />
-                <views:ItemView x:Name="ItemViewOnPage" Height="200"/>
-
-                <TextBlock Text="Levels Completed" Foreground="{StaticResource PhoneAccentBrush}" Style="{StaticResource PhoneTextLargeStyle}" />
-                <views:LevelView x:Name="LevelViewOnPage" Height="200"/>
-            </StackPanel>
-        </Grid>
-
-        <!--Uncomment to see an alignment grid to help ensure your controls are
-            aligned on common boundaries.  The image has a top margin of -32px to
-            account for the System Tray. Set this to 0 (or remove the margin altogether)
-            if the System Tray is hidden.
-
-            Before shipping remove this XAML and the image itself.-->
-        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs
deleted file mode 100644 (file)
index b8946bc..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using MVVMTestApp.Resources;
-using MVVMTestApp.ViewModelNamespace;
-
-namespace MVVMTestApp
-{
-    public partial class MainPage : PhoneApplicationPage
-    {
-        private ViewModel vm;
-
-        // Constructor
-        public MainPage()
-        {
-            InitializeComponent();
-            vm = new ViewModel();
-
-            // Sample code to localize the ApplicationBar
-            //BuildLocalizedApplicationBar();
-        }
-
-
-        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
-        {
-            base.OnNavigatedTo(e);
-
-            if (!StateUtilities.IsLaunching && this.State.ContainsKey("Accomplishments"))
-            {
-                // Old instance of the application
-                // The user started the application from the Back button.
-
-                vm = (ViewModel)this.State["Accomplishments"];
-                MessageBox.Show("Got data from state");
-            }
-            else
-            {
-                // New instance of the application
-                // The user started the application from the application list,
-                // or there is no saved state available.
-
-                vm.GetAccomplishments();
-                MessageBox.Show("Did not get data from state");
-            }
-
-
-            // There are two different views, but only one view model.
-            // So, use LINQ queries to populate the views.
-
-            // Set the data context for the Item view.
-            ItemViewOnPage.DataContext = from Accomplishment in vm.Accomplishments where Accomplishment.Type == "Item" select Accomplishment;
-
-            // Set the data context for the Level view.
-            LevelViewOnPage.DataContext = from Accomplishment in vm.Accomplishments where Accomplishment.Type == "Level" select Accomplishment;
-
-            // If there is only one view, you could use the following code
-            // to populate the view.
-            //AccomplishmentViewOnPage.DataContext = vm.Accomplishments;
-        }
-
-        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
-        {
-            base.OnNavigatedFrom(e);
-
-            if (this.State.ContainsKey("Accomplishments"))
-            {
-                this.State["Accomplishments"] = vm;
-            }
-            else
-            {
-                this.State.Add("Accomplishments", vm);
-            }
-
-            StateUtilities.IsLaunching = false;
-        }
-
-        private void AppBarSave_Click(object sender, EventArgs e)
-        {
-            vm.SaveAccomplishments();
-        }
-
-        // Sample code for building a localized ApplicationBar
-        //private void BuildLocalizedApplicationBar()
-        //{
-        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
-        //    ApplicationBar = new ApplicationBar();
-
-        //    // Create a new button and set the text value to the localized string from AppResources.
-        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
-        //    appBarButton.Text = AppResources.AppBarButtonText;
-        //    ApplicationBar.Buttons.Add(appBarButton);
-
-        //    // Create a new menu item with the localized string from AppResources.
-        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
-        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
-        //}
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs
deleted file mode 100644 (file)
index 9d8cf60..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MVVMTestApp.Model
-{
-    class Accomplishment : INotifyPropertyChanged
-    {
-        // The name of the accomplishment.
-        public string Name { get; set; }
-
-        // The type of the accomplishment, Item or Level.
-        public string Type { get; set; }
-
-        // The number of each item that has been collected.
-        private int _count;
-        public int Count
-        {
-            get
-            {
-                return _count;
-            }
-            set
-            {
-                _count = value;
-                RaisePropertyChanged("Count");
-            }
-        }
-
-        // Whether a level has been completed or not
-        private bool _completed;
-        public bool Completed
-        {
-            get
-            {
-                return _completed;
-            }
-            set
-            {
-                _completed = value;
-                RaisePropertyChanged("Completed");
-            }
-        }
-
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        private void RaisePropertyChanged(string propertyName)
-        {
-            if (this.PropertyChanged != null)
-            {
-                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-
-
-        // Create a copy of an accomplishment to save.
-        // If your object is databound, this copy is not databound.
-        public Accomplishment GetCopy()
-        {
-            Accomplishment copy = (Accomplishment)this.MemberwiseClone();
-            return copy;
-        }
-    }
-}
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml b/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml
deleted file mode 100644 (file)
index 6712a11..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index 639701a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MVVMTestApp")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("MVVMTestApp")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e647b439-ea46-4b51-ad68-e31c1b5f901d")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml b/WindowsPhone/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index 3e1ae86..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="en-US"/>
-  <App xmlns="" ProductID="{eff1a25d-bb2f-4209-89d1-bd93ce8a748a}" Title="MVVMTestApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="MVVMTestApp author" Description="Sample description" Publisher="MVVMTestApp" PublisherID="{fc116619-0493-4c77-855b-0a8bf29569f4}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING"/>
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
-      <Capability Name="ID_CAP_SENSORS"/>
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
-    </Capabilities>
-    <Tasks>
-      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="MVVMTestAppToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>MVVMTestApp</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
-    </ScreenResolutions>
-  </App>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs
deleted file mode 100644 (file)
index 794cf98..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17626
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MVVMTestApp.Resources
-{
-    using System;
-
-
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    public class AppResources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal AppResources()
-        {
-        }
-
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if (object.ReferenceEquals(resourceMan, null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MVVMTestApp.Resources.AppResources", typeof(AppResources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to LeftToRight.
-        /// </summary>
-        public static string ResourceFlowDirection
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to us-EN.
-        /// </summary>
-        public static string ResourceLanguage
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to MY APPLICATION.
-        /// </summary>
-        public static string ApplicationTitle
-        {
-            get
-            {
-                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to button.
-        /// </summary>
-        public static string AppBarButtonText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to menu item.
-        /// </summary>
-        public static string AppBarMenuItemText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx b/WindowsPhone/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx
deleted file mode 100644 (file)
index 529a194..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>en-US</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>MY APPLICATION</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>add</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Menu Item</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/StateUtilities.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/StateUtilities.cs
deleted file mode 100644 (file)
index d0cad22..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MVVMTestApp
-{
-    public static class StateUtilities
-    {
-        private static Boolean isLaunching;
-
-        public static Boolean IsLaunching
-        {
-            get { return isLaunching; }
-            set { isLaunching = value; }
-        }
-    }
-}
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml b/WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml
deleted file mode 100644 (file)
index e4a2b38..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<UserControl x:Class="MVVMTestApp.View.ItemView"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    d:DesignHeight="480" d:DesignWidth="480">
-    
-    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
-        <ListBox ItemsSource="{Binding}">
-            <ListBox.ItemTemplate>
-                <DataTemplate>
-                    <Grid>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="200"/>
-                            <ColumnDefinition Width="80"/>
-                            <ColumnDefinition Width="100"/>
-                        </Grid.ColumnDefinitions>
-                        <TextBlock x:Name="Item" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" />
-                        <TextBox x:Name="Count" Text="{Binding Path=Count, Mode=TwoWay}" Grid.Column="1" TextAlignment="Center" InputScope="Number"/>
-                        <TextBlock x:Name="Check" Text="{Binding Path=Count, Mode=OneWay}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" />
-                    </Grid>
-                </DataTemplate>
-            </ListBox.ItemTemplate>
-        </ListBox>
-    </Grid>
-</UserControl>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs
deleted file mode 100644 (file)
index 7bb34e7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-
-namespace MVVMTestApp.View
-{
-    public partial class ItemView : UserControl
-    {
-        public ItemView()
-        {
-            InitializeComponent();
-        }
-    }
-}
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml b/WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml
deleted file mode 100644 (file)
index b050de8..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<UserControl x:Class="MVVMTestApp.View.LevelView"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:src="clr-namespace:MVVMTestApp.View"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    d:DesignHeight="480" d:DesignWidth="480">
-
-    <UserControl.Resources>
-        <src:BoolOpposite x:Key="BoolOpposite"/>
-    </UserControl.Resources>
-    
-    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
-        <ListBox ItemsSource="{Binding}">
-            <ListBox.ItemTemplate>
-                <DataTemplate>
-                    <Grid>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="200"/>
-                            <ColumnDefinition Width="80"/>
-                            <ColumnDefinition Width="100"/>
-                        </Grid.ColumnDefinitions>
-                        <TextBlock x:Name="Level" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center"/>
-                        <CheckBox x:Name="Completed" IsChecked="{Binding Path=Completed, Mode=TwoWay}" Grid.Column="1" HorizontalAlignment="Center" IsEnabled="{Binding Path=Completed, Converter={StaticResource BoolOpposite}}"/>
-                        <TextBlock x:Name="Check" Text="{Binding Path=Completed, Mode=OneWay}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                    </Grid>
-                </DataTemplate>
-            </ListBox.ItemTemplate>
-        </ListBox>
-    </Grid>
-</UserControl>
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs
deleted file mode 100644 (file)
index c9f6fb3..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-
-namespace MVVMTestApp.View
-{
-    public partial class LevelView : UserControl
-    {
-        public LevelView()
-        {
-            InitializeComponent();
-        }
-    }
-
-
-    public class BoolOpposite : System.Windows.Data.IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            bool b = (bool)value;
-            return !b;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            string s = value as string;
-            bool b;
-
-            if (bool.TryParse(s, out b))
-            {
-                return !b;
-            }
-            return false;
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs b/WindowsPhone/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs
deleted file mode 100644 (file)
index 4559020..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-using MVVMTestApp.Model;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO.IsolatedStorage;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace MVVMTestApp.ViewModelNamespace
-{
-    class ViewModel
-    {
-        public ObservableCollection<Accomplishment> Accomplishments { get; set; }
-
-        public void GetAccomplishments()
-        {
-            if (IsolatedStorageSettings.ApplicationSettings.Count > 0)
-            {
-                GetSavedAccomplishments();
-            }
-            else
-            {
-                GetDefaultAccomplishments();
-            }
-        }
-
-
-        public void GetDefaultAccomplishments()
-        {
-            ObservableCollection<Accomplishment> a = new ObservableCollection<Accomplishment>();
-
-            // Items to collect
-            a.Add(new Accomplishment() { Name = "Potions", Type = "Item" });
-            a.Add(new Accomplishment() { Name = "Coins", Type = "Item" });
-            a.Add(new Accomplishment() { Name = "Hearts", Type = "Item" });
-            a.Add(new Accomplishment() { Name = "Swords", Type = "Item" });
-            a.Add(new Accomplishment() { Name = "Shields", Type = "Item" });
-
-            // Levels to complete
-            a.Add(new Accomplishment() { Name = "Level 1", Type = "Level" });
-            a.Add(new Accomplishment() { Name = "Level 2", Type = "Level" });
-            a.Add(new Accomplishment() { Name = "Level 3", Type = "Level" });
-
-            Accomplishments = a;
-            MessageBox.Show("Got accomplishments from default");
-        }
-
-
-        public void GetSavedAccomplishments()
-        {
-            ObservableCollection<Accomplishment> a = new ObservableCollection<Accomplishment>();
-
-            foreach (Object o in IsolatedStorageSettings.ApplicationSettings.Values)
-            {
-                a.Add((Accomplishment)o);
-            }
-
-            Accomplishments = a;
-            MessageBox.Show("Got accomplishments from storage");
-        }
-
-        public void SaveAccomplishments()
-        {
-            IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
-
-            foreach (Accomplishment a in Accomplishments)
-            {
-                if (settings.Contains(a.Name))
-                {
-                    settings[a.Name] = a;
-                }
-                else
-                {
-                    settings.Add(a.Name, a.GetCopy());
-                }
-            }
-
-            settings.Save();
-            MessageBox.Show("Finished saving accomplishments");
-        }
-    }
-}
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp.sln b/WindowsPhone/MyFirstApp/MyFirstApp.sln
deleted file mode 100644 (file)
index 758af47..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFirstApp", "MyFirstApp\MyFirstApp.csproj", "{F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|ARM = Debug|ARM
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|ARM = Release|ARM
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.ActiveCfg = Debug|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Build.0 = Debug|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Deploy.0 = Debug|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.ActiveCfg = Debug|x86
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Build.0 = Debug|x86
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Deploy.0 = Debug|x86
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Deploy.0 = Release|Any CPU
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.ActiveCfg = Release|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Build.0 = Release|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Deploy.0 = Release|ARM
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.ActiveCfg = Release|x86
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Build.0 = Release|x86
-               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Deploy.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml
deleted file mode 100644 (file)
index 6bf39dd..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<Application
-    x:Class="MyFirstApp.App"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
-
-    <!--Application Resources-->
-    <Application.Resources>
-        <local:LocalizedStrings xmlns:local="clr-namespace:MyFirstApp" x:Key="LocalizedStrings"/>
-    </Application.Resources>
-
-    <Application.ApplicationLifetimeObjects>
-        <!--Required object that handles lifetime events for the application-->
-        <shell:PhoneApplicationService
-            Launching="Application_Launching" Closing="Application_Closing"
-            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
-    </Application.ApplicationLifetimeObjects>
-
-</Application>
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs
deleted file mode 100644 (file)
index d90d8b3..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using MyFirstApp.Resources;
-
-namespace MyFirstApp
-{
-    public partial class App : Application
-    {
-        /// <summary>
-        /// Provides easy access to the root frame of the Phone Application.
-        /// </summary>
-        /// <returns>The root frame of the Phone Application.</returns>
-        public static PhoneApplicationFrame RootFrame { get; private set; }
-
-        /// <summary>
-        /// Constructor for the Application object.
-        /// </summary>
-        public App()
-        {
-            // Global handler for uncaught exceptions.
-            UnhandledException += Application_UnhandledException;
-
-            // Standard XAML initialization
-            InitializeComponent();
-
-            // Phone-specific initialization
-            InitializePhoneApplication();
-
-            // Language display initialization
-            InitializeLanguage();
-
-            // Show graphics profiling information while debugging.
-            if (Debugger.IsAttached)
-            {
-                // Display the current frame rate counters.
-                Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
-                // Show the areas of the app that are being redrawn in each frame.
-                //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
-                // Enable non-production analysis visualization mode,
-                // which shows areas of a page that are handed off to GPU with a colored overlay.
-                //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
-                // Prevent the screen from turning off while under the debugger by disabling
-                // the application's idle detection.
-                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
-                // and consume battery power when the user is not using the phone.
-                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
-            }
-
-        }
-
-        // Code to execute when the application is launching (eg, from Start)
-        // This code will not execute when the application is reactivated
-        private void Application_Launching(object sender, LaunchingEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is activated (brought to foreground)
-        // This code will not execute when the application is first launched
-        private void Application_Activated(object sender, ActivatedEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is deactivated (sent to background)
-        // This code will not execute when the application is closing
-        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
-        {
-        }
-
-        // Code to execute when the application is closing (eg, user hit Back)
-        // This code will not execute when the application is deactivated
-        private void Application_Closing(object sender, ClosingEventArgs e)
-        {
-        }
-
-        // Code to execute if a navigation fails
-        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // A navigation has failed; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        // Code to execute on Unhandled Exceptions
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // An unhandled exception has occurred; break into the debugger
-                Debugger.Break();
-            }
-        }
-
-        #region Phone application initialization
-
-        // Avoid double-initialization
-        private bool phoneApplicationInitialized = false;
-
-        // Do not add any additional code to this method
-        private void InitializePhoneApplication()
-        {
-            if (phoneApplicationInitialized)
-                return;
-
-            // Create the frame but don't set it as RootVisual yet; this allows the splash
-            // screen to remain active until the application is ready to render.
-            RootFrame = new PhoneApplicationFrame();
-            RootFrame.Navigated += CompleteInitializePhoneApplication;
-
-            // Handle navigation failures
-            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
-            // Handle reset requests for clearing the backstack
-            RootFrame.Navigated += CheckForResetNavigation;
-
-            // Ensure we don't initialize again
-            phoneApplicationInitialized = true;
-        }
-
-        // Do not add any additional code to this method
-        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
-        {
-            // Set the root visual to allow the application to render
-            if (RootVisual != RootFrame)
-                RootVisual = RootFrame;
-
-            // Remove this handler since it is no longer needed
-            RootFrame.Navigated -= CompleteInitializePhoneApplication;
-        }
-
-        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
-        {
-            // If the app has received a 'reset' navigation, then we need to check
-            // on the next navigation to see if the page stack should be reset
-            if (e.NavigationMode == NavigationMode.Reset)
-                RootFrame.Navigated += ClearBackStackAfterReset;
-        }
-
-        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
-        {
-            // Unregister the event so it doesn't get called again
-            RootFrame.Navigated -= ClearBackStackAfterReset;
-
-            // Only clear the stack for 'new' (forward) and 'refresh' navigations
-            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
-                return;
-
-            // For UI consistency, clear the entire page stack
-            while (RootFrame.RemoveBackEntry() != null)
-            {
-                ; // do nothing
-            }
-        }
-
-        #endregion
-
-        // Initialize the app's font and flow direction as defined in its localized resource strings.
-        //
-        // To ensure that the font of your application is aligned with its supported languages and that the
-        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
-        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
-        // file's culture. For example:
-        //
-        // AppResources.es-ES.resx
-        //    ResourceLanguage's value should be "es-ES"
-        //    ResourceFlowDirection's value should be "LeftToRight"
-        //
-        // AppResources.ar-SA.resx
-        //     ResourceLanguage's value should be "ar-SA"
-        //     ResourceFlowDirection's value should be "RightToLeft"
-        //
-        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
-        //
-        private void InitializeLanguage()
-        {
-            try
-            {
-                // Set the font to match the display language defined by the
-                // ResourceLanguage resource string for each supported language.
-                //
-                // Fall back to the font of the neutral language if the Display
-                // language of the phone is not supported.
-                //
-                // If a compiler error is hit then ResourceLanguage is missing from
-                // the resource file.
-                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
-                // Set the FlowDirection of all elements under the root frame based
-                // on the ResourceFlowDirection resource string for each
-                // supported language.
-                //
-                // If a compiler error is hit then ResourceFlowDirection is missing from
-                // the resource file.
-                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
-                RootFrame.FlowDirection = flow;
-            }
-            catch
-            {
-                // If an exception is caught here it is most likely due to either
-                // ResourceLangauge not being correctly set to a supported language
-                // code or ResourceFlowDirection is set to a value other than LeftToRight
-                // or RightToLeft.
-
-                if (Debugger.IsAttached)
-                {
-                    Debugger.Break();
-                }
-
-                throw;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png
deleted file mode 100644 (file)
index f7d2e97..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml
deleted file mode 100644 (file)
index cb7a41f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="MyFirstApp" EntryPointType="MyFirstApp.App" RuntimeVersion="4.7.50308.0">
-  <Deployment.Parts>
-    <AssemblyPart x:Name="MyFirstApp" Source="MyFirstApp.dll" />
-  </Deployment.Parts>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll
deleted file mode 100644 (file)
index 945d969..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap
deleted file mode 100644 (file)
index 3c59ec6..0000000
Binary files a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap and /dev/null differ
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index c4639aa..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="en-US" />
-  <App xmlns="" ProductID="{f14cb6c1-c8a1-4527-92cc-4f30748bafea}" Title="MyFirstApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="MyFirstApp author" Description="Sample description" Publisher="MyFirstApp" PublisherID="{821ad788-05f7-4b13-9ca9-a4f6e1e00573}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING" />
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
-      <Capability Name="ID_CAP_SENSORS" />
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
-    </Capabilities>
-    <Tasks>
-      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="MyFirstAppToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>MyFirstApp</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
-      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
-      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
-    </ScreenResolutions>
-  </App>
-</Deployment>
-<!-- WPSDK Version 8.0.9900 -->
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs b/WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs
deleted file mode 100644 (file)
index 63a8ef9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using MyFirstApp.Resources;
-
-namespace MyFirstApp
-{
-    /// <summary>
-    /// Provides access to string resources.
-    /// </summary>
-    public class LocalizedStrings
-    {
-        private static AppResources _localizedResources = new AppResources();
-
-        public AppResources LocalizedResources { get { return _localizedResources; } }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml
deleted file mode 100644 (file)
index a1adb74..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="MyFirstApp.MainPage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
-    shell:SystemTray.IsVisible="True">
-
-    <!--LayoutRoot is the root grid where all page content is placed-->
-    <Grid x:Name="LayoutRoot" Background="Transparent">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition Height="*"/>
-        </Grid.RowDefinitions>
-
-        <!-- LOCALIZATION NOTE:
-            To localize the displayed strings copy their values to appropriately named
-            keys in the app's neutral language resource file (AppResources.resx) then
-            replace the hard-coded text value between the attributes' quotation marks
-            with the binding clause whose path points to that string name.
-
-            For example:
-
-                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
-
-            This binding points to the template's string resource named "ApplicationTitle".
-
-            Adding supported languages in the Project Properties tab will create a
-            new resx file per language that can carry the translated values of your
-            UI strings. The binding in these examples will cause the value of the
-            attributes to be drawn from the .resx file that matches the
-            CurrentUICulture of the app at run time.
-         -->
-
-        <!--TitlePanel contains the name of the application and page title-->
-        <StackPanel x:Name="TitlePanel" Margin="12,0,0,0">
-            <TextBlock x:Name="ApplicationTitle" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0" Text="My First Application"/>
-            <TextBlock Text="Mini Browser" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" VerticalAlignment="Bottom"/>
-            <Button x:Name="Go" Content="Go" HorizontalAlignment="Right" Click="Go_Click"/>
-            <TextBox x:Name="URL" Text="http://gumartinm.name" Margin="0,0,170,0" VerticalAlignment="Top"/>
-        </StackPanel>
-
-        <!--ContentPanel - place additional content here-->
-        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-            <phone:WebBrowser x:Name="MiniBrowser" Margin="10,10,24,33"/>
-
-        </Grid>
-
-        <!--Uncomment to see an alignment grid to help ensure your controls are
-            aligned on common boundaries.  The image has a top margin of -32px to
-            account for the System Tray. Set this to 0 (or remove the margin altogether)
-            if the System Tray is hidden.
-
-            Before shipping remove this XAML and the image itself.-->
-        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml.cs b/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml.cs
deleted file mode 100644 (file)
index 6d33668..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using MyFirstApp.Resources;
-
-namespace MyFirstApp
-{
-    public partial class MainPage : PhoneApplicationPage
-    {
-        // Constructor
-        public MainPage()
-        {
-            InitializeComponent();
-
-            // Sample code to localize the ApplicationBar
-            //BuildLocalizedApplicationBar();
-        }
-
-        private void Go_Click(object sender, RoutedEventArgs e)
-        {
-            string site = URL.Text;
-            MiniBrowser.Navigate(new Uri(site, UriKind.Absolute));
-        }
-
-        // Sample code for building a localized ApplicationBar
-        //private void BuildLocalizedApplicationBar()
-        //{
-        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
-        //    ApplicationBar = new ApplicationBar();
-
-        //    // Create a new button and set the text value to the localized string from AppResources.
-        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
-        //    appBarButton.Text = AppResources.AppBarButtonText;
-        //    ApplicationBar.Buttons.Add(appBarButton);
-
-        //    // Create a new menu item with the localized string from AppResources.
-        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
-        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
-        //}
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/MyFirstApp.csproj b/WindowsPhone/MyFirstApp/MyFirstApp/MyFirstApp.csproj
deleted file mode 100644 (file)
index 832c445..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MyFirstApp</RootNamespace>
-    <AssemblyName>MyFirstApp</AssemblyName>
-    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
-    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <SilverlightApplication>true</SilverlightApplication>
-    <SupportedCultures>
-    </SupportedCultures>
-    <XapOutputs>true</XapOutputs>
-    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
-    <XapFilename>MyFirstApp_$(Configuration)_$(Platform).xap</XapFilename>
-    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
-    <SilverlightAppEntry>MyFirstApp.App</SilverlightAppEntry>
-    <ValidateXaml>true</ValidateXaml>
-    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\ARM\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\ARM\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="LocalizedStrings.cs" />
-    <Compile Include="MainPage.xaml.cs">
-      <DependentUpon>MainPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources\AppResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.resx</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </ApplicationDefinition>
-    <Page Include="MainPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Properties\AppManifest.xml" />
-    <None Include="Properties\WMAppManifest.xml">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Assets\AlignmentGrid.png" />
-    <Content Include="Assets\ApplicationIcon.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\AppResources.resx">
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions />
-</Project>
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Properties/AppManifest.xml b/WindowsPhone/MyFirstApp/MyFirstApp/Properties/AppManifest.xml
deleted file mode 100644 (file)
index 6712a11..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs b/WindowsPhone/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index 507c3ad..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MyFirstApp")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("MyFirstApp")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("0615693f-c745-4df6-ada2-336d114d4fce")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml b/WindowsPhone/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index ee73aef..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="en-US"/>
-  <App xmlns="" ProductID="{f14cb6c1-c8a1-4527-92cc-4f30748bafea}" Title="MyFirstApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="MyFirstApp author" Description="Sample description" Publisher="MyFirstApp" PublisherID="{821ad788-05f7-4b13-9ca9-a4f6e1e00573}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING"/>
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
-      <Capability Name="ID_CAP_SENSORS"/>
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
-    </Capabilities>
-    <Tasks>
-      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="MyFirstAppToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>MyFirstApp</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
-      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
-    </ScreenResolutions>
-  </App>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs b/WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs
deleted file mode 100644 (file)
index 650c1c0..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17626
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MyFirstApp.Resources
-{
-    using System;
-
-
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    public class AppResources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal AppResources()
-        {
-        }
-
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if (object.ReferenceEquals(resourceMan, null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MyFirstApp.Resources.AppResources", typeof(AppResources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to LeftToRight.
-        /// </summary>
-        public static string ResourceFlowDirection
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to us-EN.
-        /// </summary>
-        public static string ResourceLanguage
-        {
-            get
-            {
-                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to MY APPLICATION.
-        /// </summary>
-        public static string ApplicationTitle
-        {
-            get
-            {
-                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to button.
-        /// </summary>
-        public static string AppBarButtonText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
-            }
-        }
-
-        /// <summary>
-        ///   Looks up a localized string similar to menu item.
-        /// </summary>
-        public static string AppBarMenuItemText
-        {
-            get
-            {
-                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.resx b/WindowsPhone/MyFirstApp/MyFirstApp/Resources/AppResources.resx
deleted file mode 100644 (file)
index 529a194..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>en-US</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>MY APPLICATION</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>add</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Menu Item</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents.sln b/WindowsPhone/RemoteAgents/RemoteAgents.sln
deleted file mode 100644 (file)
index 1d0a861..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30110.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteAgents", "RemoteAgents\RemoteAgents.csproj", "{C11B661C-3470-4542-83A7-939674DB2BD2}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|ARM = Debug|ARM
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|ARM = Release|ARM
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.ActiveCfg = Debug|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.Build.0 = Debug|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.Deploy.0 = Debug|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.ActiveCfg = Debug|x86
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.Build.0 = Debug|x86
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.Deploy.0 = Debug|x86
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.Deploy.0 = Release|Any CPU
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.ActiveCfg = Release|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.Build.0 = Release|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.Deploy.0 = Release|ARM
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.ActiveCfg = Release|x86
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.Build.0 = Release|x86
-               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.Deploy.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/App.xaml b/WindowsPhone/RemoteAgents/RemoteAgents/App.xaml
deleted file mode 100644 (file)
index f2681b6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<Application
-    x:Class="RemoteAgents.App"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
-
-    <!--Recursos de la aplicación-->
-    <Application.Resources>
-        <local:LocalizedStrings xmlns:local="clr-namespace:RemoteAgents" x:Key="LocalizedStrings"/>
-    </Application.Resources>
-
-    <Application.ApplicationLifetimeObjects>
-        <!--Objeto requerido que controla los eventos de duración de la aplicación-->
-        <shell:PhoneApplicationService
-            Launching="Application_Launching" Closing="Application_Closing"
-            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
-    </Application.ApplicationLifetimeObjects>
-
-</Application>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/App.xaml.cs b/WindowsPhone/RemoteAgents/RemoteAgents/App.xaml.cs
deleted file mode 100644 (file)
index 5453f1e..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Example.RemoteAgents.WindowsPhone.Resources;
-
-namespace RemoteAgents
-{
-    public partial class App : Application
-    {
-        /// <summary>
-        /// Proporcionar acceso sencillo al marco raíz de la aplicación telefónica.
-        /// </summary>
-        /// <returns>Marco raíz de la aplicación telefónica.</returns>
-        public static PhoneApplicationFrame RootFrame { get; private set; }
-
-        /// <summary>
-        /// Constructor para el objeto Application.
-        /// </summary>
-        public App()
-        {
-            // Controlador global para excepciones no detectadas.
-            UnhandledException += Application_UnhandledException;
-
-            // Inicialización XAML estándar
-            InitializeComponent();
-
-            // Inicialización especifica del teléfono
-            InitializePhoneApplication();
-
-            // Inicialización del idioma
-            InitializeLanguage();
-
-            // Mostrar información de generación de perfiles gráfica durante la depuración.
-            if (Debugger.IsAttached)
-            {
-                // Mostrar los contadores de velocidad de marcos actual.
-                Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
-                // Mostrar las áreas de la aplicación que se están volviendo a dibujar en cada marco.
-                //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
-                // Habilitar el modo de visualización de análisis de no producción,
-                // que muestra áreas de una página que se entregan a la GPU con una superposición coloreada.
-                //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
-                // Impedir que la pantalla se apague mientras se realiza la depuración deshabilitando
-                // la detección de inactividad de la aplicación.
-                // Precaución: solo debe usarse en modo de depuración. Las aplicaciones que deshabiliten la detección de inactividad del usuario seguirán en ejecución
-                // y consumirán energía de la batería cuando el usuario no esté usando el teléfono.
-                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
-            }
-
-        }
-
-        // Código para ejecutar cuando la aplicación se inicia (p.ej. a partir de Inicio)
-        // Este código no se ejecutará cuando la aplicación se reactive
-        private void Application_Launching(object sender, LaunchingEventArgs e)
-        {
-        }
-
-        // Código para ejecutar cuando la aplicación se activa (se trae a primer plano)
-        // Este código no se ejecutará cuando la aplicación se inicie por primera vez
-        private void Application_Activated(object sender, ActivatedEventArgs e)
-        {
-        }
-
-        // Código para ejecutar cuando la aplicación se desactiva (se envía a segundo plano)
-        // Este código no se ejecutará cuando la aplicación se cierre
-        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
-        {
-        }
-
-        // Código para ejecutar cuando la aplicación se cierra (p.ej., al hacer clic en Atrás)
-        // Este código no se ejecutará cuando la aplicación se desactive
-        private void Application_Closing(object sender, ClosingEventArgs e)
-        {
-        }
-
-        // Código para ejecutar si hay un error de navegación
-        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // Ha habido un error de navegación; interrumpir el depurador
-                Debugger.Break();
-            }
-        }
-
-        // Código para ejecutar en excepciones no controladas
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // Se ha producido una excepción no controlada; interrumpir el depurador
-                Debugger.Break();
-            }
-        }
-
-        #region Inicialización de la aplicación telefónica
-
-        // Evitar inicialización doble
-        private bool phoneApplicationInitialized = false;
-
-        // No agregar ningún código adicional a este método
-        private void InitializePhoneApplication()
-        {
-            if (phoneApplicationInitialized)
-                return;
-
-            // Crear el marco pero no establecerlo como RootVisual todavía; esto permite que
-            // la pantalla de presentación permanezca activa hasta que la aplicación esté lista para la presentación.
-            RootFrame = new PhoneApplicationFrame();
-            RootFrame.Navigated += CompleteInitializePhoneApplication;
-
-            // Controlar errores de navegación
-            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
-            // Controlar solicitudes de restablecimiento para borrar la pila de retroceso
-            RootFrame.Navigated += CheckForResetNavigation;
-
-            // Asegurarse de que no volvemos a inicializar
-            phoneApplicationInitialized = true;
-        }
-
-        // No agregar ningún código adicional a este método
-        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
-        {
-            // Establecer el objeto visual raíz para permitir que la aplicación se presente
-            if (RootVisual != RootFrame)
-                RootVisual = RootFrame;
-
-            // Quitar este controlador porque ya no es necesario
-            RootFrame.Navigated -= CompleteInitializePhoneApplication;
-        }
-
-        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
-        {
-            // Si la aplicación ha recibido una navegación 'reset', tenemos que comprobarlo
-            // en la siguiente navegación para ver si se debe restablecer la pila de páginas
-            if (e.NavigationMode == NavigationMode.Reset)
-                RootFrame.Navigated += ClearBackStackAfterReset;
-        }
-
-        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
-        {
-            // Anular registro del evento para que no se vuelva a llamar
-            RootFrame.Navigated -= ClearBackStackAfterReset;
-
-            // Borrar solo la pila de navegaciones 'new' (hacia delante) y 'refresh'
-            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
-                return;
-
-            // Por coherencia de la IU, borrar toda la pila de páginas
-            while (RootFrame.RemoveBackEntry() != null)
-            {
-                ; // no hacer nada
-            }
-        }
-
-        #endregion
-
-        // Inicializar la fuente y la dirección de flujo de la aplicación según se define en sus cadenas de recursos traducidas.
-        //
-        // Para asegurarse de que la fuente de la aplicación está alineada con sus idiomas admitidos y que
-        // FlowDirection para todos esos idiomas sigue su dirección tradicional, ResourceLanguage
-        // y ResourceFlowDirection se debe inicializar en cada archivo resx para que estos valores coincidan con ese
-        // referencia cultural del archivo. Por ejemplo:
-        //
-        // AppResources.es-ES.resx
-        //    El valor de ResourceLanguage debe ser "es-ES"
-        //    El valor de ResourceFlowDirection debe ser "LeftToRight"
-        //
-        // AppResources.ar-SA.resx
-        //     El valor de ResourceLanguage debe ser "ar-SA"
-        //     El valor de ResourceFlowDirection debe ser "RightToLeft"
-        //
-        // Para obtener más información sobre cómo traducir aplicaciones para Windows Phone, consulte http://go.microsoft.com/fwlink/?LinkId=262072.
-        //
-        private void InitializeLanguage()
-        {
-            try
-            {
-                // Establecer la fuente para que coincida con el idioma definido por
-                // Cadena de recursos ResourceLanguage para cada idioma admitido.
-                //
-                // Recurrir a la fuente del idioma neutro si el idioma
-                // del teléfono no se admite.
-                //
-                // Si se produce un error del compilador, falta ResourceLanguage
-                // el archivo de recursos.
-                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
-                // Establecer FlowDirection de todos los elementos del marco raíz según
-                // en la cadena de recursos ResourceFlowDirection para cada
-                // idioma admitido.
-                //
-                // Si se produce un error del compilador, falta ResourceFlowDirection
-                // el archivo de recursos.
-                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
-                RootFrame.FlowDirection = flow;
-            }
-            catch
-            {
-                // Si se detecta aquí una excepción, lo más probable es que se deba a
-                // ResourceLanguage no se ha establecido correctamente en un idioma admitido
-                // o ResourceFlowDirection se ha establecido en un valor distinto de LeftToRight
-                // o RightToLeft.
-
-                if (Debugger.IsAttached)
-                {
-                    Debugger.Break();
-                }
-
-                throw;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png
deleted file mode 100644 (file)
index f7d2e97..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/LocalizedStrings.cs b/WindowsPhone/RemoteAgents/RemoteAgents/LocalizedStrings.cs
deleted file mode 100644 (file)
index e9c2ec8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using Example.RemoteAgents.WindowsPhone.Resources;
-
-namespace RemoteAgents
-{
-    /// <summary>
-    /// Proporciona acceso a los recursos de cadena.
-    /// </summary>
-    public class LocalizedStrings
-    {
-        private static AppResources _localizedResources = new AppResources();
-
-        public AppResources LocalizedResources { get { return _localizedResources; } }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml b/WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml
deleted file mode 100644 (file)
index 57f0f33..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="RemoteAgents.MainPage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="Portrait" Orientation="Portrait"
-    shell:SystemTray.IsVisible="True">
-
-    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
-    <Grid x:Name="LayoutRoot" Background="Transparent">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition Height="*"/>
-        </Grid.RowDefinitions>
-
-        <!-- NOTA PARA LA TRADUCCIÓN:
-            Para traducir las cadenas mostradas, copia sus valores a las claves con el nombre
-            correspondiente en el archivo de recursos del idioma neutro (AppResources.resx) de la aplicación y
-            reemplaza el valor de texto codificado de forma rígida entre las comillas de los atributos
-            con la cláusula de enlace cuya ruta de acceso apunte a ese nombre de cadena.
-
-            Por ejemplo:
-
-                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
-
-            Este enlace apunta al recurso de cadena de la plantilla denominado "ApplicationTitle".
-
-            Al agregar idiomas admitidos en la pestaña Propiedades del proyecto se creará un
-            nuevo archivo resx por idioma que puede contener los valores traducidos de las
-            cadenas de la interfaz de usuario. El enlace de estos ejemplos hará que el valor de los atributos
-            se tome del archivo .resx correspondiente al valor de
-            CurrentUICulture de la aplicación en tiempo de ejecución.
-         -->
-
-        <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
-        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
-            <TextBlock Text="{Binding LocalizedResources.ApplicationTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
-            <TextBlock Text="{Binding LocalizedResources.ApplicationName, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
-        </StackPanel>
-
-        <!--ContentPanel. Colocar aquí el contenido adicional-->
-        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-            <TextBox x:Name="CurrentDateTextBox" HorizontalAlignment="Left" Height="72" Margin="0,57,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="456" IsReadOnly="True" InputScope="Date"/>
-            <Button x:Name="ButtonRetrieveRemoteData" Content="{Binding LocalizedResources.ButtonRetrieveRemoteData, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Margin="289,479,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.915,0.432"/>
-            <Button x:Name="ButtonSendRemoteData" Content="{Binding LocalizedResources.ButtonSendRemoteData, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Margin="29,479,0,0" VerticalAlignment="Top"/>
-            <TextBox x:Name="TextBoxSendText" HorizontalAlignment="Left" Height="182" Margin="10,236,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="251"/>
-            <TextBlock HorizontalAlignment="Left" Margin="29,192,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="29" Width="121" Text="{Binding LocalizedResources.TextBlockSendText, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
-               <Run Text="Send Text"/>
-               <Run Text=":"/>
-               <LineBreak/>
-               <Run/>
-            </TextBlock>
-            <TextBlock HorizontalAlignment="Left" Margin="29,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="29" Width="121" Text="{Binding LocalizedResources.TextBlockRemoteDate, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
-               <Run Text="Remote Date:"/>
-               <LineBreak/>
-               <Run/>
-            </TextBlock>
-
-        </Grid>
-
-        <!--Quitar la marca de comentarios para ver una cuadrícula de alineación que
-            ayuda a comprobar que los controles están alineados en los límites normales.  La imagen tiene un margen superior de -32px para
-            tener en cuenta la bandeja del sistema. Establécelo en 0 (o quite el margen)
-            si la bandeja del sistema está oculta.
-
-            Antes de enviarla, quita este código XAML y la propia imagen.-->
-        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml.cs b/WindowsPhone/RemoteAgents/RemoteAgents/MainPage.xaml.cs
deleted file mode 100644 (file)
index bb16625..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Example.RemoteAgents.WindowsPhone.Resources;
-using RemoteAgents.WindowsPhone.View;
-using NLog;
-
-namespace RemoteAgents
-{
-    public partial class MainPage : PhoneApplicationPage
-    {
-        private readonly ViewImpl _view;
-
-        /// <summary>
-        /// The logger.
-        /// </summary>
-        private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
-
-        // Constructor
-        public MainPage()
-        {
-            _view = new ViewImpl();
-
-            InitializeComponent();
-
-            this.registerEvents();
-            // Código de ejemplo para traducir ApplicationBar
-            //BuildLocalizedApplicationBar();
-        }
-
-        async private void ButtonRetrieveRemoteData_Click(object sender, RoutedEventArgs e)
-        {
-            try
-            {
-                // Returning data in the same context (the UI thread) because we want to update the UI.
-                this.CurrentDateTextBox.Text = await _view.GetCurrentDateAsync();
-            }
-            catch (Exception exception)
-            {
-                // TODO: Should I catch exceptions in the UI thread? I guess it is right but not sure...
-                _logger.ErrorException("ButtonGetDateClicked error: ", exception);
-            }
-        }
-
-        async private void SendDataButtonClicked(object sender, RoutedEventArgs e)
-        {
-            try
-            {
-                int number = 666;
-                await _view.SetWriteTextAsync(this.TextBoxSendText.Text,
-                                              number);
-            }
-            catch (Exception exception)
-            {
-                // TODO: Should I catch exceptions in the UI thread? I guess it is right but not sure...
-                _logger.ErrorException("SendDataButtonClicked error: ", exception);
-            }
-        }
-
-        private void registerEvents ()
-        {
-            this.ButtonRetrieveRemoteData.Click += ButtonRetrieveRemoteData_Click;
-            this.ButtonSendRemoteData.Click += SendDataButtonClicked;
-        }
-
-        // Código de ejemplo para compilar una ApplicationBar traducida
-        //private void BuildLocalizedApplicationBar()
-        //{
-        //    // Establecer ApplicationBar de la página en una nueva instancia de ApplicationBar.
-        //    ApplicationBar = new ApplicationBar();
-
-        //    // Crear un nuevo botón y establecer el valor de texto en la cadena traducida de AppResources.
-        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
-        //    appBarButton.Text = AppResources.AppBarButtonText;
-        //    ApplicationBar.Buttons.Add(appBarButton);
-
-        //    // Crear un nuevo elemento de menú con la cadena traducida de AppResources.
-        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
-        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
-        //}
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/NLog.config b/WindowsPhone/RemoteAgents/RemoteAgents/NLog.config
deleted file mode 100644 (file)
index ba49fd2..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
-      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-  <!-- 
-  See http://nlog-project.org/wiki/Configuration_file 
-  for information on customizing logging rules and outputs.
-   -->
-  <targets async="true">
-    <!-- add your targets here
-
-    <target name="asyncFile" xsi:type="AsyncWrapper">
-      <target xsi:type="File" name="logfile" fileName="${shortdate}.log"
-            layout="${longdate} ${uppercase:${level}} ${callsite} ${message} ${newline}" />
-    </target>
-
-    -->
-    <target xsi:type="LogReceiverService"
-      name="remoteLog"
-      endpointAddress="http://gumartinm.name/Design_Time_Addresses/MyLogReceiverApp/LogReceiverServer/"
-      useBinaryEncoding="false"
-      clientId="remoteagents_wp8"
-      includeEventProperties="true">
-      <parameter layout="${longdate} ${uppercase:${level}} ${callsite} ${message} ${newline}" />
-    </target>
-
-  </targets>
-
-  <rules>
-    <!-- add your logging rules here -->
-    
-    <!--
-    <logger name="*" minlevel="Info" writeTo="asyncFile" />
-    -->
-    <logger name="*" minlevel="Info" writeTo="remoteLog" />
-
-  </rules>
-</nlog>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/NLog.xsd b/WindowsPhone/RemoteAgents/RemoteAgents/NLog.xsd
deleted file mode 100644 (file)
index 49dd620..0000000
+++ /dev/null
@@ -1,2638 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema id="NLog" targetNamespace="http://www.nlog-project.org/schemas/NLog.xsd" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.nlog-project.org/schemas/NLog.xsd">
-  <xs:element name="nlog" type="NLogConfiguration" />
-  <xs:complexType name="NLogConfiguration">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="extensions" type="NLogExtensions" />
-      <xs:element name="include" type="NLogInclude" />
-      <xs:element name="variable" type="NLogVariable" />
-      <xs:element name="targets" type="NLogTargets" />
-      <xs:element name="rules" type="NLogRules" />
-    </xs:choice>
-    <xs:attribute name="autoReload" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Watch config file for changes and reload automatically.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="internalLogToConsole" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Print internal NLog messages to the console. Default value is: false</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="internalLogToConsoleError" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Print internal NLog messages to the console error output. Default value is: false</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="internalLogFile" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Write internal NLog messages to the specified file.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="internalLogLevel" type="NLogLevel">
-      <xs:annotation>
-        <xs:documentation>Log level threshold for internal log messages. Default value is: Info.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="globalThreshold" type="NLogLevel">
-      <xs:annotation>
-        <xs:documentation>Global log level threshold for application log messages. Messages below this level won't be logged..</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="throwExceptions" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Pass NLog internal exceptions to the application. Default value is: false.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLogTargets">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="default-wrapper" type="WrapperTargetBase" />
-      <xs:element name="default-target-parameters" type="Target" />
-      <xs:element name="target" type="Target" />
-      <xs:element name="wrapper-target" type="WrapperTargetBase" />
-      <xs:element name="compound-target" type="CompoundTargetBase" />
-    </xs:choice>
-    <xs:attribute name="async" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLogRules">
-    <xs:sequence minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="logger" type="NLogLoggerRule" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="NLogExtensions">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="add" type="NLogExtensionsAdd" />
-    </xs:choice>
-  </xs:complexType>
-  <xs:complexType name="NLogExtensionsAdd">
-    <xs:attribute name="prefix" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Prefix for targets/layout renderers/filters/conditions loaded from this assembly.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="assemblyFile" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Load NLog extensions from the specified file (*.dll)</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="assembly" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Load NLog extensions from the specified assembly. Assembly name should be fully qualified.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLogLoggerRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="filters" type="NLogFilters" />
-    </xs:choice>
-    <xs:attribute name="name" use="optional">
-      <xs:annotation>
-        <xs:documentation>Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="levels" type="NLogLevelList">
-      <xs:annotation>
-        <xs:documentation>Comma separated list of levels that this rule matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="minlevel" type="NLogLevel">
-      <xs:annotation>
-        <xs:documentation>Minimum level that this rule matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="maxlevel" type="NLogLevel">
-      <xs:annotation>
-        <xs:documentation>Maximum level that this rule matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="level" type="NLogLevel">
-      <xs:annotation>
-        <xs:documentation>Level that this rule matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="writeTo" type="NLogTargetIDList">
-      <xs:annotation>
-        <xs:documentation>Comma separated list of target names.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="final" type="xs:boolean" default="false">
-      <xs:annotation>
-        <xs:documentation>Ignore further rules if this one matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLogFilters">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="when" type="when" />
-      <xs:element name="whenContains" type="whenContains" />
-      <xs:element name="whenEqual" type="whenEqual" />
-      <xs:element name="whenNotContains" type="whenNotContains" />
-      <xs:element name="whenNotEqual" type="whenNotEqual" />
-    </xs:choice>
-  </xs:complexType>
-  <xs:simpleType name="NLogLevel">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Off" />
-      <xs:enumeration value="Trace" />
-      <xs:enumeration value="Debug" />
-      <xs:enumeration value="Info" />
-      <xs:enumeration value="Warn" />
-      <xs:enumeration value="Error" />
-      <xs:enumeration value="Fatal" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLogLevelList">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="(|Trace|Debug|Info|Warn|Error|Fatal)(,(Trace|Debug|Info|Warn|Error|Fatal))*" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLogInclude">
-    <xs:attribute name="file" type="SimpleLayoutAttribute" use="required">
-      <xs:annotation>
-        <xs:documentation>Name of the file to be included. The name is relative to the name of the current config file.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="ignoreErrors" type="xs:boolean" use="optional" default="false">
-      <xs:annotation>
-        <xs:documentation>Ignore any errors in the include file.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLogVariable">
-    <xs:attribute name="name" type="xs:string" use="required">
-      <xs:annotation>
-        <xs:documentation>Variable name.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="value" type="SimpleLayoutAttribute" use="required">
-      <xs:annotation>
-        <xs:documentation>Variable value.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:simpleType name="NLogTargetIDList">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="(|([a-zA-Z][a-zA-Z0-9_\-]*))(,([a-zA-Z][a-zA-Z0-9_\-]*))*" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="Target" abstract="true"></xs:complexType>
-  <xs:complexType name="TargetRef">
-    <xs:attribute name="name" type="xs:string" use="required" />
-  </xs:complexType>
-  <xs:complexType name="WrapperTargetBase" abstract="true">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="target" type="Target" minOccurs="1" maxOccurs="1" />
-          <xs:element name="wrapper-target" type="WrapperTargetBase" minOccurs="1" maxOccurs="1" />
-          <xs:element name="compound-target" type="CompoundTargetBase" minOccurs="1" maxOccurs="1" />
-          <xs:element name="target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-          <xs:element name="wrapper-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-          <xs:element name="compound-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-        </xs:choice>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="CompoundTargetBase" abstract="true">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="target" type="Target" minOccurs="1" maxOccurs="unbounded" />
-          <xs:element name="wrapper-target" type="WrapperTargetBase" minOccurs="1" maxOccurs="1" />
-          <xs:element name="compound-target" type="CompoundTargetBase" minOccurs="1" maxOccurs="1" />
-          <xs:element name="target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-          <xs:element name="wrapper-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-          <xs:element name="compound-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
-        </xs:choice>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Layout"></xs:complexType>
-  <xs:complexType name="Filter" abstract="true"></xs:complexType>
-  <xs:simpleType name="SimpleLayoutAttribute">
-    <xs:restriction base="xs:string">
-      <xs:pattern value=".*" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="Condition">
-    <xs:restriction base="xs:string">
-      <xs:minLength value="1" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="AspNetBufferingWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="growBufferAsNeeded" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="bufferGrowLimit" minOccurs="0" maxOccurs="1" type="xs:integer" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="growBufferAsNeeded" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether buffer should grow as needed.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="bufferSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of log events to be buffered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="bufferGrowLimit" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum number of log events that the buffer can keep.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="AspNetTrace">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="AspResponse">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="addComments" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="addComments" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to add &lt;!-- --&gt; comments around all written texts.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="AsyncWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="queueLimit" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="timeToSleepBetweenBatches" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="batchSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="overflowAction" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="queueLimit" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Limit on the number of requests in the lazy writer thread request queue.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="timeToSleepBetweenBatches" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Time in milliseconds to sleep between batches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="batchSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of log events that should be processed in a batch by the lazy writer thread.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="overflowAction" type="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when the lazy writer thread request queue count exceeds the set limit.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Grow" />
-      <xs:enumeration value="Discard" />
-      <xs:enumeration value="Block" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="AutoFlushWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="BufferingWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="slidingTimeout" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="flushTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="slidingTimeout" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use sliding timeout.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="flushTimeout" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="bufferSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of log events to be buffered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Chainsaw">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
-          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
-          <xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="newLine" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
-          <xs:annotation>
-            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxMessageSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum message size in bytes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding to be used.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="address" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Network address.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="connectionCacheSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepConnection" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxQueueSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum queue size.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeMdc" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeCallSite" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="appInfo" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeNLogData" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeNdc" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="ndcItemSeparator" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>NDC item separator.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeSourceInfo" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.NetworkTargetOverflowAction">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Error" />
-      <xs:enumeration value="Split" />
-      <xs:enumeration value="Discard" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLog.Targets.NLogViewerParameterInfo">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-    </xs:choice>
-    <xs:attribute name="layout" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="name" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Viewer parameter name.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="ColoredConsole">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="highlight-row" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.ConsoleRowHighlightingRule" />
-          <xs:element name="highlight-word" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.ConsoleWordHighlightingRule" />
-          <xs:element name="useDefaultRowHighlightingRules" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="errorStream" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text to be rendered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useDefaultRowHighlightingRules" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use default row highlighting rules.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="errorStream" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.ConsoleOutputColor">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Black" />
-      <xs:enumeration value="DarkBlue" />
-      <xs:enumeration value="DarkGreen" />
-      <xs:enumeration value="DarkCyan" />
-      <xs:enumeration value="DarkRed" />
-      <xs:enumeration value="DarkMagenta" />
-      <xs:enumeration value="DarkYellow" />
-      <xs:enumeration value="Gray" />
-      <xs:enumeration value="DarkGray" />
-      <xs:enumeration value="Blue" />
-      <xs:enumeration value="Green" />
-      <xs:enumeration value="Cyan" />
-      <xs:enumeration value="Red" />
-      <xs:enumeration value="Magenta" />
-      <xs:enumeration value="Yellow" />
-      <xs:enumeration value="White" />
-      <xs:enumeration value="NoChange" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLog.Targets.ConsoleRowHighlightingRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
-      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
-      <xs:element name="foregroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
-    </xs:choice>
-    <xs:attribute name="condition" type="Condition">
-      <xs:annotation>
-        <xs:documentation>Condition that must be met in order to set the specified foreground and background color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="backgroundColor" type="NLog.Targets.ConsoleOutputColor">
-      <xs:annotation>
-        <xs:documentation>Background color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="foregroundColor" type="NLog.Targets.ConsoleOutputColor">
-      <xs:annotation>
-        <xs:documentation>Foreground color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLog.Targets.ConsoleWordHighlightingRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-      <xs:element name="regex" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="wholeWords" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
-      <xs:element name="foregroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
-    </xs:choice>
-    <xs:attribute name="ignoreCase" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="regex" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="text" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="wholeWords" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="backgroundColor" type="NLog.Targets.ConsoleOutputColor">
-      <xs:annotation>
-        <xs:documentation>Background color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="foregroundColor" type="NLog.Targets.ConsoleOutputColor">
-      <xs:annotation>
-        <xs:documentation>Foreground color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="Console">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="error" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text to be rendered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="error" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to send the log messages to the standard error instead of the standard output.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Database">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="dbUserName" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="dbProvider" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="useTransactions" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="dbPassword" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="connectionStringName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="connectionString" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="dbHost" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="dbDatabase" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="uninstall-command" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseCommandInfo" />
-          <xs:element name="install-command" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseCommandInfo" />
-          <xs:element name="installConnectionString" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseParameterInfo" />
-          <xs:element name="commandText" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="dbUserName" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="dbProvider" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the database provider.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useTransactions" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use database transactions. Some data providers require this.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepConnection" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to keep the database connection open between the log events.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="dbPassword" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="connectionStringName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the connection string (as specified in &lt;connectionStrings&gt; configuration section.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="connectionString" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="dbHost" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="dbDatabase" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="installConnectionString" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="commandText" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text of the SQL command to be run on each log level.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="System.Data.CommandType">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Text" />
-      <xs:enumeration value="StoredProcedure" />
-      <xs:enumeration value="TableDirect" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLog.Targets.DatabaseCommandInfo">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="commandType" minOccurs="0" maxOccurs="1" type="System.Data.CommandType" />
-      <xs:element name="connectionString" minOccurs="0" maxOccurs="1" type="Layout" />
-      <xs:element name="ignoreFailures" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-      <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseParameterInfo" />
-      <xs:element name="text" minOccurs="0" maxOccurs="1" type="Layout" />
-    </xs:choice>
-    <xs:attribute name="commandType" type="System.Data.CommandType">
-      <xs:annotation>
-        <xs:documentation>Type of the command.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="connectionString" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Connection string to run the command against. If not provided, connection string from the target is used.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="ignoreFailures" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Indicates whether to ignore failures.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="text" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Command text.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLog.Targets.DatabaseParameterInfo">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="precision" minOccurs="0" maxOccurs="1" type="xs:byte" />
-      <xs:element name="scale" minOccurs="0" maxOccurs="1" type="xs:byte" />
-      <xs:element name="size" minOccurs="0" maxOccurs="1" type="xs:integer" />
-    </xs:choice>
-    <xs:attribute name="layout" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="name" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Database parameter name.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="precision" type="xs:byte">
-      <xs:annotation>
-        <xs:documentation>Database parameter precision.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="scale" type="xs:byte">
-      <xs:annotation>
-        <xs:documentation>Database parameter scale.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="size" type="xs:integer">
-      <xs:annotation>
-        <xs:documentation>Database parameter size.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="Debugger">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text to be rendered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Debug">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="EventLog">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="machineName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="source" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="log" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="category" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="eventId" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="machineName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the machine on which Event Log service is running.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="source" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Value to be used as the event Source.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="log" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the Event Log to write to. This can be System, Application or any user-defined name.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="category" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout that renders event Category.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="eventId" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout that renders event ID.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="FallbackGroup">
-    <xs:complexContent>
-      <xs:extension base="CompoundTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="returnToFirstOnSuccess" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="returnToFirstOnSuccess" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to return to the first target after any successful write.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="File">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="lineEnding" minOccurs="0" maxOccurs="1" type="NLog.Targets.LineEndingMode" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="archiveEvery" minOccurs="0" maxOccurs="1" type="NLog.Targets.FileArchivePeriod" />
-          <xs:element name="archiveAboveSize" minOccurs="0" maxOccurs="1" type="xs:long" />
-          <xs:element name="archiveFileName" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="maxArchiveFiles" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="archiveNumbering" minOccurs="0" maxOccurs="1" type="NLog.Targets.ArchiveNumberingMode" />
-          <xs:element name="forceManaged" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="fileAttributes" minOccurs="0" maxOccurs="1" type="NLog.Targets.Win32FileAttributes" />
-          <xs:element name="deleteOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="enableFileDelete" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="createDirs" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="replaceFileContentsOnEachWrite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="fileName" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="openFileCacheTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="concurrentWriteAttemptDelay" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="autoFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="concurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="openFileCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="networkWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="keepFileOpen" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>File encoding.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="lineEnding" type="NLog.Targets.LineEndingMode">
-          <xs:annotation>
-            <xs:documentation>Line ending mode.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text to be rendered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="archiveEvery" type="NLog.Targets.FileArchivePeriod">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to automatically archive log files every time the specified time passes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="archiveAboveSize" type="xs:long">
-          <xs:annotation>
-            <xs:documentation>Size in bytes above which log files will be automatically archived.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="archiveFileName" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Name of the file to be used for an archive.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxArchiveFiles" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="archiveNumbering" type="NLog.Targets.ArchiveNumberingMode">
-          <xs:annotation>
-            <xs:documentation>Way file archives are numbered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="forceManaged" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Gets ors set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="fileAttributes" type="NLog.Targets.Win32FileAttributes">
-          <xs:annotation>
-            <xs:documentation>File attributes (Windows only).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="deleteOldFileOnStartup" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to delete old log file on startup.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="enableFileDelete" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="createDirs" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to create directories if they don't exist.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="replaceFileContentsOnEachWrite" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="fileName" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Name of the file to write to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="openFileCacheTimeout" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="bufferSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Log file buffer size in bytes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="concurrentWriteAttempts" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="concurrentWriteAttemptDelay" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="autoFlush" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="concurrentWrites" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="openFileCacheSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="networkWrites" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepFileOpen" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.LineEndingMode">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Default" />
-      <xs:enumeration value="CRLF" />
-      <xs:enumeration value="CR" />
-      <xs:enumeration value="LF" />
-      <xs:enumeration value="None" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Targets.FileArchivePeriod">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="None" />
-      <xs:enumeration value="Year" />
-      <xs:enumeration value="Month" />
-      <xs:enumeration value="Day" />
-      <xs:enumeration value="Hour" />
-      <xs:enumeration value="Minute" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Targets.ArchiveNumberingMode">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Sequence" />
-      <xs:enumeration value="Rolling" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Targets.Win32FileAttributes">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="ReadOnly" />
-      <xs:enumeration value="Hidden" />
-      <xs:enumeration value="System" />
-      <xs:enumeration value="Archive" />
-      <xs:enumeration value="Device" />
-      <xs:enumeration value="Normal" />
-      <xs:enumeration value="Temporary" />
-      <xs:enumeration value="SparseFile" />
-      <xs:enumeration value="ReparsePoint" />
-      <xs:enumeration value="Compressed" />
-      <xs:enumeration value="NotContentIndexed" />
-      <xs:enumeration value="Encrypted" />
-      <xs:enumeration value="WriteThrough" />
-      <xs:enumeration value="NoBuffering" />
-      <xs:enumeration value="DeleteOnClose" />
-      <xs:enumeration value="PosixSemantics" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="FilteringWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="condition" type="Condition">
-          <xs:annotation>
-            <xs:documentation>Condition expression. Log events who meet this condition will be forwarded to the wrapped target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="FormControl">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="formName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="controlName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="append" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="reverseOrder" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="formName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the Form on which the control is located.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="controlName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of control to which NLog will log write log text.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="append" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether log text should be appended to the text of the control instead of overwriting it.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="reverseOrder" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Whether new log entry are added to the start or the end of the control</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="ImpersonatingWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="password" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="revertToSelf" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="userName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="logOnType" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.SecurityLogOnType" />
-          <xs:element name="domain" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="impersonationLevel" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.SecurityImpersonationLevel" />
-          <xs:element name="logOnProvider" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.LogOnProviderType" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="password" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>User account password.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="revertToSelf" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to revert to the credentials of the process instead of impersonating another user.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="userName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Username to change context to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="logOnType" type="NLog.Targets.Wrappers.SecurityLogOnType">
-          <xs:annotation>
-            <xs:documentation>Logon Type.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="domain" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Windows domain name to change context to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="impersonationLevel" type="NLog.Targets.Wrappers.SecurityImpersonationLevel">
-          <xs:annotation>
-            <xs:documentation>Required impersonation level.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="logOnProvider" type="NLog.Targets.Wrappers.LogOnProviderType">
-          <xs:annotation>
-            <xs:documentation>Type of the logon provider.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.Wrappers.SecurityLogOnType">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Interactive" />
-      <xs:enumeration value="Network" />
-      <xs:enumeration value="Batch" />
-      <xs:enumeration value="Service" />
-      <xs:enumeration value="NetworkClearText" />
-      <xs:enumeration value="NewCredentials" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Targets.Wrappers.SecurityImpersonationLevel">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Anonymous" />
-      <xs:enumeration value="Identification" />
-      <xs:enumeration value="Impersonation" />
-      <xs:enumeration value="Delegation" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Targets.Wrappers.LogOnProviderType">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Default" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="LogReceiverService">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="endpointConfigurationName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="endpointAddress" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="useBinaryEncoding" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
-          <xs:element name="clientId" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="includeEventProperties" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="endpointConfigurationName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the endpoint configuration in WCF configuration file.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="endpointAddress" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Endpoint address.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useBinaryEncoding" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use binary message encoding.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="clientId" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Client ID.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeEventProperties" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include per-event properties in the payload sent to the server.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="NLog.Targets.MethodCallParameter">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="type" minOccurs="0" maxOccurs="1" type="xs:string" />
-    </xs:choice>
-    <xs:attribute name="layout" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="name" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Name of the parameter.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="type" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Type of the parameter.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="Mail">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="html" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="addNewLines" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="to" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="cc" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="bcc" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="subject" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="body" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="from" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="replaceNewlineWithBrTagInHtml" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="priority" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="useSystemNetMailSettings" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="smtpServer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="smtpUserName" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="smtpPort" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="smtpAuthentication" minOccurs="0" maxOccurs="1" type="NLog.Targets.SmtpAuthenticationMode" />
-          <xs:element name="smtpPassword" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="enableSsl" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="html" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to send message as HTML instead of plain text.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding to be used for sending e-mail.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="addNewLines" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to add new lines between log entries.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Text to be rendered.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="to" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="cc" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="bcc" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="subject" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Mail subject.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="body" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Mail message body (repeated for each log message send in one mail).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="from" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Sender's email address (e.g. joe@domain.com).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="replaceNewlineWithBrTagInHtml" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether NewLine characters in the body should be replaced with  tags.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="priority" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Priority used for sending mails.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useSystemNetMailSettings" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether the default Settings from System.Net.MailSettings should be used.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="smtpServer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>SMTP Server to be used for sending.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="smtpUserName" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="smtpPort" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Port number that SMTP Server is listening on.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="smtpAuthentication" type="NLog.Targets.SmtpAuthenticationMode">
-          <xs:annotation>
-            <xs:documentation>SMTP Authentication mode.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="smtpPassword" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="enableSsl" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.SmtpAuthenticationMode">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="None" />
-      <xs:enumeration value="Basic" />
-      <xs:enumeration value="Ntlm" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="Memory">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="MessageBox">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="caption" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="caption" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Message box title.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="MSMQ">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="useXmlEncoding" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="checkIfQueueExists" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="queue" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="recoverable" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="createQueueIfNotExists" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="label" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useXmlEncoding" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use the XML format when serializing message. This will also disable creating queues.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="checkIfQueueExists" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to check if a queue exists before writing to it.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding to be used when writing text to the queue.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="queue" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Name of the queue to write to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="recoverable" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use recoverable messages (with guaranteed delivery).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="createQueueIfNotExists" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to create the queue if it doesn't exists.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="label" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Label to associate with each message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="MethodCall">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="methodName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="className" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="methodName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Method name. The method must be public and static.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="className" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Class name.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Network">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
-          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="newLine" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
-          <xs:annotation>
-            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxMessageSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum message size in bytes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding to be used.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepConnection" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="connectionCacheSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="address" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Network address.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxQueueSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum queue size.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="NLogViewer">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
-          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
-          <xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="newLine" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
-          <xs:annotation>
-            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxMessageSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum message size in bytes.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding to be used.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="address" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Network address.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="connectionCacheSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepConnection" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxQueueSize" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum queue size.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeMdc" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeCallSite" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="appInfo" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeNLogData" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeNdc" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="ndcItemSeparator" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>NDC item separator.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="includeSourceInfo" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Null">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="formatMessage" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="formatMessage" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to perform layout calculation.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="OutputDebugString">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="PerfCounter">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="counterName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="counterType" minOccurs="0" maxOccurs="1" type="System.Diagnostics.PerformanceCounterType" />
-          <xs:element name="instanceName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="autoCreate" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="categoryName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="counterHelp" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="counterName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the performance counter.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="counterType" type="System.Diagnostics.PerformanceCounterType">
-          <xs:annotation>
-            <xs:documentation>Performance counter type.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="instanceName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Performance counter instance name.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="autoCreate" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether performance counter should be automatically created.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="categoryName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the performance counter category.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="counterHelp" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Counter help text.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="System.Diagnostics.PerformanceCounterType">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="NumberOfItems32" />
-      <xs:enumeration value="NumberOfItems64" />
-      <xs:enumeration value="NumberOfItemsHEX32" />
-      <xs:enumeration value="NumberOfItemsHEX64" />
-      <xs:enumeration value="RateOfCountsPerSecond32" />
-      <xs:enumeration value="RateOfCountsPerSecond64" />
-      <xs:enumeration value="CountPerTimeInterval32" />
-      <xs:enumeration value="CountPerTimeInterval64" />
-      <xs:enumeration value="RawFraction" />
-      <xs:enumeration value="RawBase" />
-      <xs:enumeration value="AverageTimer32" />
-      <xs:enumeration value="AverageBase" />
-      <xs:enumeration value="AverageCount64" />
-      <xs:enumeration value="SampleFraction" />
-      <xs:enumeration value="SampleCounter" />
-      <xs:enumeration value="SampleBase" />
-      <xs:enumeration value="CounterTimer" />
-      <xs:enumeration value="CounterTimerInverse" />
-      <xs:enumeration value="Timer100Ns" />
-      <xs:enumeration value="Timer100NsInverse" />
-      <xs:enumeration value="ElapsedTime" />
-      <xs:enumeration value="CounterMultiTimer" />
-      <xs:enumeration value="CounterMultiTimerInverse" />
-      <xs:enumeration value="CounterMultiTimer100Ns" />
-      <xs:enumeration value="CounterMultiTimer100NsInverse" />
-      <xs:enumeration value="CounterMultiBase" />
-      <xs:enumeration value="CounterDelta32" />
-      <xs:enumeration value="CounterDelta64" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="PostFilteringWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="defaultFilter" minOccurs="0" maxOccurs="1" type="Condition" />
-          <xs:element name="when" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.Wrappers.FilteringRule" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="defaultFilter" type="Condition">
-          <xs:annotation>
-            <xs:documentation>Default filter to be applied when no specific rule matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="NLog.Targets.Wrappers.FilteringRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="exists" minOccurs="0" maxOccurs="1" type="Condition" />
-      <xs:element name="filter" minOccurs="0" maxOccurs="1" type="Condition" />
-    </xs:choice>
-    <xs:attribute name="exists" type="Condition">
-      <xs:annotation>
-        <xs:documentation>Condition to be tested.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="filter" type="Condition">
-      <xs:annotation>
-        <xs:documentation>Resulting filter to be applied when the condition matches.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="RandomizeGroup">
-    <xs:complexContent>
-      <xs:extension base="CompoundTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="RepeatingWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="repeatCount" minOccurs="0" maxOccurs="1" type="xs:integer" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="repeatCount" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of times to repeat each log message.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="RetryingWrapper">
-    <xs:complexContent>
-      <xs:extension base="WrapperTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="retryDelayMilliseconds" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="retryCount" minOccurs="0" maxOccurs="1" type="xs:integer" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="retryDelayMilliseconds" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Time to wait between retries in milliseconds.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="retryCount" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Number of retries that should be attempted on the wrapped target in case of a failure.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="RichTextBox">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="showMinimized" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="maxLines" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="width" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="toolWindow" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="controlName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="autoScroll" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="height" minOccurs="0" maxOccurs="1" type="xs:integer" />
-          <xs:element name="formName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="word-coloring" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.RichTextBoxWordColoringRule" />
-          <xs:element name="useDefaultRowColoringRules" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="row-coloring" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.RichTextBoxRowColoringRule" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="showMinimized" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether the created form will be initially minimized.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="maxLines" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Maximum number of lines the rich text box will store (or 0 to disable this feature).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="width" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Initial width of the form with rich text box.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="toolWindow" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether the created window will be a tool window.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="controlName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of RichTextBox to which Nlog will write.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="autoScroll" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether scroll bar will be moved automatically to show most recent log entries.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="height" type="xs:integer">
-          <xs:annotation>
-            <xs:documentation>Initial height of the form with rich text box.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="formName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useDefaultRowColoringRules" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to use default coloring rules.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="System.Drawing.FontStyle">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Regular" />
-      <xs:enumeration value="Bold" />
-      <xs:enumeration value="Italic" />
-      <xs:enumeration value="Underline" />
-      <xs:enumeration value="Strikeout" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLog.Targets.RichTextBoxWordColoringRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-      <xs:element name="regex" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="wholeWords" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="fontColor" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="style" minOccurs="0" maxOccurs="1" type="System.Drawing.FontStyle" />
-    </xs:choice>
-    <xs:attribute name="ignoreCase" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="regex" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="text" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="wholeWords" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="backgroundColor" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="fontColor" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="style" type="System.Drawing.FontStyle">
-      <xs:annotation>
-        <xs:documentation>Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="NLog.Targets.RichTextBoxRowColoringRule">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
-      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="fontColor" minOccurs="0" maxOccurs="1" type="xs:string" />
-      <xs:element name="style" minOccurs="0" maxOccurs="1" type="System.Drawing.FontStyle" />
-    </xs:choice>
-    <xs:attribute name="condition" type="Condition">
-      <xs:annotation>
-        <xs:documentation>Condition that must be met in order to set the specified font color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="backgroundColor" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Background color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="fontColor" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Font color.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="style" type="System.Drawing.FontStyle">
-      <xs:annotation>
-        <xs:documentation>Font style of matched text.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="RoundRobinGroup">
-    <xs:complexContent>
-      <xs:extension base="CompoundTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="SplitGroup">
-    <xs:complexContent>
-      <xs:extension base="CompoundTargetBase">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Trace">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout used to format log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="WebService">
-    <xs:complexContent>
-      <xs:extension base="Target">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
-          <xs:element name="url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
-          <xs:element name="namespace" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="protocol" minOccurs="0" maxOccurs="1" type="NLog.Targets.WebServiceProtocol" />
-          <xs:element name="methodName" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="name" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Name of the target.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="url" type="xs:anyURI">
-          <xs:annotation>
-            <xs:documentation>Web service URL.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="namespace" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Web service namespace.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="protocol" type="NLog.Targets.WebServiceProtocol">
-          <xs:annotation>
-            <xs:documentation>Protocol to be used when calling web service.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="methodName" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Web service method name.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encoding" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Encoding.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Targets.WebServiceProtocol">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Soap11" />
-      <xs:enumeration value="Soap12" />
-      <xs:enumeration value="HttpPost" />
-      <xs:enumeration value="HttpGet" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="CsvLayout">
-    <xs:complexContent>
-      <xs:extension base="Layout">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="quoteChar" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="quoting" minOccurs="0" maxOccurs="1" type="NLog.Layouts.CsvQuotingMode" />
-          <xs:element name="withHeader" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="column" minOccurs="0" maxOccurs="unbounded" type="NLog.Layouts.CsvColumn" />
-          <xs:element name="customColumnDelimiter" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="delimiter" minOccurs="0" maxOccurs="1" type="NLog.Layouts.CsvColumnDelimiterMode" />
-        </xs:choice>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header layout.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer layout.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="quoteChar" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Quote Character.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="quoting" type="NLog.Layouts.CsvQuotingMode">
-          <xs:annotation>
-            <xs:documentation>Quoting mode.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="withHeader" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether CVS should include header.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="customColumnDelimiter" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="delimiter" type="NLog.Layouts.CsvColumnDelimiterMode">
-          <xs:annotation>
-            <xs:documentation>Column delimiter.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="NLog.Layouts.CsvQuotingMode">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="All" />
-      <xs:enumeration value="Nothing" />
-      <xs:enumeration value="Auto" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="NLog.Layouts.CsvColumnDelimiterMode">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Auto" />
-      <xs:enumeration value="Comma" />
-      <xs:enumeration value="Semicolon" />
-      <xs:enumeration value="Tab" />
-      <xs:enumeration value="Pipe" />
-      <xs:enumeration value="Space" />
-      <xs:enumeration value="Custom" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="NLog.Layouts.CsvColumn">
-    <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
-    </xs:choice>
-    <xs:attribute name="layout" type="SimpleLayoutAttribute">
-      <xs:annotation>
-        <xs:documentation>Layout of the column.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="name" type="xs:string">
-      <xs:annotation>
-        <xs:documentation>Name of the column.</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:complexType>
-  <xs:complexType name="LayoutWithHeaderAndFooter">
-    <xs:complexContent>
-      <xs:extension base="Layout">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
-        </xs:choice>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="header" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Header layout.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="footer" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Footer layout.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="Log4JXmlEventLayout">
-    <xs:complexContent>
-      <xs:extension base="Layout">
-        <xs:choice minOccurs="0" maxOccurs="unbounded" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="SimpleLayout">
-    <xs:complexContent>
-      <xs:extension base="Layout">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="text" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Layout text.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="when">
-    <xs:complexContent>
-      <xs:extension base="Filter">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
-          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
-        </xs:choice>
-        <xs:attribute name="condition" type="Condition">
-          <xs:annotation>
-            <xs:documentation>Condition expression.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="action" type="FilterResult">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:simpleType name="FilterResult">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="Neutral" />
-      <xs:enumeration value="Log" />
-      <xs:enumeration value="Ignore" />
-      <xs:enumeration value="LogFinal" />
-      <xs:enumeration value="IgnoreFinal" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:complexType name="whenContains">
-    <xs:complexContent>
-      <xs:extension base="Filter">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="substring" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
-          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="substring" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Substring to be matched.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="action" type="FilterResult">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="ignoreCase" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="whenEqual">
-    <xs:complexContent>
-      <xs:extension base="Filter">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
-          <xs:element name="compareTo" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="ignoreCase" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="action" type="FilterResult">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="compareTo" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>String to compare the layout to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="whenNotContains">
-    <xs:complexContent>
-      <xs:extension base="Filter">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="substring" minOccurs="0" maxOccurs="1" type="xs:string" />
-          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
-          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-        </xs:choice>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="substring" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>Substring to be matched.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="action" type="FilterResult">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="ignoreCase" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="whenNotEqual">
-    <xs:complexContent>
-      <xs:extension base="Filter">
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
-          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
-          <xs:element name="compareTo" minOccurs="0" maxOccurs="1" type="xs:string" />
-        </xs:choice>
-        <xs:attribute name="ignoreCase" type="xs:boolean">
-          <xs:annotation>
-            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="layout" type="SimpleLayoutAttribute">
-          <xs:annotation>
-            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="action" type="FilterResult">
-          <xs:annotation>
-            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="compareTo" type="xs:string">
-          <xs:annotation>
-            <xs:documentation>String to compare the layout to.</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-</xs:schema>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Properties/AppManifest.xml b/WindowsPhone/RemoteAgents/RemoteAgents/Properties/AppManifest.xml
deleted file mode 100644 (file)
index 3b998eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs b/WindowsPhone/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index b3eafc0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// La información general de un ensamblado se controla mediante el siguiente 
-// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
-// asociada a un ensamblado.
-[assembly: AssemblyTitle("RemoteAgents")]
-[assembly: AssemblyDescription("Little program to connect with remote applications through JSON API")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("gumartinm.name")]
-[assembly: AssemblyProduct("RemoteAgents")]
-[assembly: AssemblyCopyright("Gustavo Martin Morcuende ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Si ComVisible se establece en False, los componentes COM no verán los 
-// tipos de este ensamblado.  Si necesita obtener acceso a un tipo de este ensamblado desde 
-// COM, establezca el atributo ComVisible en True en este tipo.
-[assembly: ComVisible(false)]
-
-// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM
-[assembly: Guid("49e577e0-1571-4598-a428-522438fa6a16")]
-
-// La información de versión de un ensamblado consta de los cuatro valores siguientes:
-//
-//      Versión principal
-//      Versión secundaria 
-//      Número de compilación
-//      Revisión
-//
-// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y revisión 
-// mediante el carácter '*', como se muestra a continuación:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("es-ES")]
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml b/WindowsPhone/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index acb6a52..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="es-ES" />
-  <Languages xmlns="">
-    <Language code="en-US" />
-  </Languages>
-  <App xmlns="" ProductID="{c11b661c-3470-4542-83a7-939674db2bd2}" Title="RemoteAgents" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="RemoteAgents author" Description="Sample description" Publisher="RemoteAgents" PublisherID="{911c4cb8-4dfc-4145-93c3-f2723d77b481}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING" />
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
-      <Capability Name="ID_CAP_SENSORS" />
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
-    </Capabilities>
-    <Tasks>
-      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="RemoteAgentsToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>RemoteAgents</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
-      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
-      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
-    </ScreenResolutions>
-  </App>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/RemoteAgents.csproj b/WindowsPhone/RemoteAgents/RemoteAgents/RemoteAgents.csproj
deleted file mode 100644 (file)
index c81bd3b..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{C11B661C-3470-4542-83A7-939674DB2BD2}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Example.RemoteAgents.WindowsPhone</RootNamespace>
-    <AssemblyName>RemoteAgents</AssemblyName>
-    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
-    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <SilverlightApplication>true</SilverlightApplication>
-    <SupportedCultures>en-US</SupportedCultures>
-    <XapOutputs>true</XapOutputs>
-    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
-    <XapFilename>RemoteAgents_$(Configuration)_$(Platform).xap</XapFilename>
-    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
-    <SilverlightAppEntry>RemoteAgents.App</SilverlightAppEntry>
-    <ValidateXaml>true</ValidateXaml>
-    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\ARM\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\ARM\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="LocalizedStrings.cs" />
-    <Compile Include="MainPage.xaml.cs">
-      <DependentUpon>MainPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources\AppResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="ViewModel\ViewModel.cs" />
-    <Compile Include="View\View.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </ApplicationDefinition>
-    <Page Include="MainPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="NLog.config">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-      <SubType>Designer</SubType>
-    </Content>
-    <None Include="NLog.xsd">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="packages.config" />
-    <None Include="Properties\AppManifest.xml" />
-    <None Include="Properties\WMAppManifest.xml">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Assets\AlignmentGrid.png" />
-    <Content Include="Assets\ApplicationIcon.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\AppResources.en-US.resx" />
-    <EmbeddedResource Include="Resources\AppResources.resx">
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="jsonrpc4net, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\jsonrpc4net\jsonrpc4net\Bin\Debug\jsonrpc4net.dll</HintPath>
-    </Reference>
-    <Reference Include="NLog">
-      <HintPath>..\packages\NLog.2.1.0\lib\sl4-windowsphone71\NLog.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Model\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions />
-  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" />
-  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
-    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
-    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
-  </Target>
-</Project>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs b/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs
deleted file mode 100644 (file)
index 8c2adf9..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     Este código fue generado por una herramienta.
-//     Versión de runtime:4.0.30319.34011
-//
-//     Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
-//     se vuelve a generar el código.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Example.RemoteAgents.WindowsPhone.Resources {
-    using System;
-    
-    
-    /// <summary>
-    ///   Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
-    /// </summary>
-    // StronglyTypedResourceBuilder generó automáticamente esta clase
-    // a través de una herramienta como ResGen o Visual Studio.
-    // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen
-    // con la opción /str o recompile su proyecto de VS.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    public class AppResources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal AppResources() {
-        }
-        
-        /// <summary>
-        ///   Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Example.RemoteAgents.WindowsPhone.Resources.AppResources", typeof(AppResources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las
-        ///   búsquedas de recursos mediante esta clase de recurso fuertemente tipado.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a agregar.
-        /// </summary>
-        public static string AppBarButtonText {
-            get {
-                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Elemento de menú.
-        /// </summary>
-        public static string AppBarMenuItemText {
-            get {
-                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Remote Agent.
-        /// </summary>
-        public static string ApplicationName {
-            get {
-                return ResourceManager.GetString("ApplicationName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Remote Agents.
-        /// </summary>
-        public static string ApplicationTitle {
-            get {
-                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a GetData.
-        /// </summary>
-        public static string ButtonRetrieveRemoteData {
-            get {
-                return ResourceManager.GetString("ButtonRetrieveRemoteData", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a SendData.
-        /// </summary>
-        public static string ButtonSendRemoteData {
-            get {
-                return ResourceManager.GetString("ButtonSendRemoteData", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a LeftToRight.
-        /// </summary>
-        public static string ResourceFlowDirection {
-            get {
-                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a es-ES.
-        /// </summary>
-        public static string ResourceLanguage {
-            get {
-                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a RemoteDate:.
-        /// </summary>
-        public static string TextBlockRemoteDate {
-            get {
-                return ResourceManager.GetString("TextBlockRemoteDate", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a SendText:.
-        /// </summary>
-        public static string TextBlockSendText {
-            get {
-                return ResourceManager.GetString("TextBlockSendText", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx b/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx
deleted file mode 100644 (file)
index 55148b1..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>en-US</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>Remote Agents</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>agregar</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Elemento de menú</value>
-  </data>
-  <data name="ApplicationName" xml:space="preserve">
-    <value>Remote Agent</value>
-  </data>
-  <data name="ButtonRetrieveRemoteData" xml:space="preserve">
-    <value>GetData</value>
-  </data>
-  <data name="ButtonSendRemoteData" xml:space="preserve">
-    <value>SendData</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.resx b/WindowsPhone/RemoteAgents/RemoteAgents/Resources/AppResources.resx
deleted file mode 100644 (file)
index 3faabb4..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>es-ES</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>Remote Agents</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>agregar</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Elemento de menú</value>
-  </data>
-  <data name="ApplicationName" xml:space="preserve">
-    <value>Remote Agent</value>
-  </data>
-  <data name="ButtonRetrieveRemoteData" xml:space="preserve">
-    <value>GetData</value>
-  </data>
-  <data name="ButtonSendRemoteData" xml:space="preserve">
-    <value>SendData</value>
-  </data>
-  <data name="TextBlockRemoteDate" xml:space="preserve">
-    <value>RemoteDate:</value>
-  </data>
-  <data name="TextBlockSendText" xml:space="preserve">
-    <value>SendText:</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/View/View.cs b/WindowsPhone/RemoteAgents/RemoteAgents/View/View.cs
deleted file mode 100644 (file)
index dc1bcb7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-using RemoteAgents.WindowsPhone.ViewModel;
-using System.Threading.Tasks;
-
-namespace RemoteAgents.WindowsPhone.View
-{
-    public class ViewImpl
-    {
-        private readonly ViewModelImpl _vm = new ViewModelImpl();
-
-        async public Task<string> GetCurrentDateAsync()
-        {
-            // Returning data in a diferent context. Upper layer decides.
-            return await _vm.GetCurrentDateAsync().ConfigureAwait(false);
-        }
-
-        async public Task SetWriteTextAsync(string text, int number)
-        {
-            // Returning data in a diferent context. Upper layer decides.
-            await _vm.SetWriteTextAsync(text, number).ConfigureAwait(false);
-        }
-    }
-}
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs b/WindowsPhone/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs
deleted file mode 100644 (file)
index 788a762..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-using GumartinM.JsonRPC4NET;
-using System.Threading.Tasks;
-
-namespace RemoteAgents.WindowsPhone.ViewModel
-{
-    public class ViewModelImpl
-    {
-        private static readonly string uri = "http://gumartinm.name/spring-mainapp/CurrentDateService.json";
-        private static readonly string uriSetWriteText = "http://gumartinm.name/spring-mainapp/WriteTextService.json";
-        private readonly JsonRpcHttpAsyncClient _remoteClient = new JsonRpcHttpAsyncClient();
-
-        async public Task<string> GetCurrentDateAsync()
-        {
-            // Returning data in a diferent context. Upper layer decides.
-            return await _remoteClient.PostRemoteServiceAsync<string>(uri, "getCurrentDate").ConfigureAwait(false);
-        }
-
-        async public Task SetWriteTextAsync(string text, int number)
-        {
-            // Returning data in a diferent context. Upper layer decides.
-            await _remoteClient.PostRemoteServiceAsync(uriSetWriteText, "setWriteText", text, number).ConfigureAwait(false);
-        }
-
-    }
-}
diff --git a/WindowsPhone/RemoteAgents/RemoteAgents/packages.config b/WindowsPhone/RemoteAgents/RemoteAgents/packages.config
deleted file mode 100644 (file)
index 6ae732e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Microsoft.Bcl" version="1.1.3" targetFramework="wp80" />
-  <package id="Microsoft.Bcl.Build" version="1.0.10" targetFramework="wp80" />
-  <package id="Microsoft.Net.Http" version="2.2.18" targetFramework="wp80" />
-  <package id="Newtonsoft.Json" version="6.0.1" targetFramework="wp80" />
-  <package id="NLog" version="2.1.0" targetFramework="wp80" />
-  <package id="NLog.Config" version="2.1.0" targetFramework="wp80" />
-  <package id="NLog.Schema" version="2.1.0" targetFramework="wp80" />
-</packages>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame.sln b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame.sln
new file mode 100644 (file)
index 0000000..2378ac3
--- /dev/null
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connect4MonoGame", "Connect4MonoGame\Connect4MonoGame.csproj", "{1B061ADC-B891-4E69-B96A-E054C80333C0}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.ActiveCfg = Debug|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Build.0 = Debug|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Deploy.0 = Debug|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.ActiveCfg = Debug|x86
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Build.0 = Debug|x86
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Deploy.0 = Debug|x86
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.ActiveCfg = Release|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Build.0 = Release|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Deploy.0 = Release|ARM
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.ActiveCfg = Release|x86
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Build.0 = Release|x86
+               {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml
new file mode 100644 (file)
index 0000000..a03ea47
--- /dev/null
@@ -0,0 +1,20 @@
+<Application
+    x:Class="Connect4MonoGame.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
+
+    <!--Application Resources-->
+    <Application.Resources>
+        <local:LocalizedStrings xmlns:local="clr-namespace:Connect4MonoGame" x:Key="LocalizedStrings"/>
+    </Application.Resources>
+
+    <Application.ApplicationLifetimeObjects>
+        <!--Required object that handles lifetime events for the application-->
+        <shell:PhoneApplicationService
+            Launching="Application_Launching" Closing="Application_Closing"
+            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
+    </Application.ApplicationLifetimeObjects>
+
+</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/App.xaml.cs
new file mode 100644 (file)
index 0000000..74b8d52
--- /dev/null
@@ -0,0 +1,223 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Connect4MonoGame.Resources;
+
+namespace Connect4MonoGame
+{
+    public partial class App : Application
+    {
+        /// <summary>
+        /// Provides easy access to the root frame of the Phone Application.
+        /// </summary>
+        /// <returns>The root frame of the Phone Application.</returns>
+        public static PhoneApplicationFrame RootFrame { get; private set; }
+
+        /// <summary>
+        /// Constructor for the Application object.
+        /// </summary>
+        public App()
+        {
+            // Global handler for uncaught exceptions.
+            UnhandledException += Application_UnhandledException;
+
+            // Standard XAML initialization
+            InitializeComponent();
+
+            // Phone-specific initialization
+            InitializePhoneApplication();
+
+            // Language display initialization
+            InitializeLanguage();
+
+            // Show graphics profiling information while debugging.
+            if (Debugger.IsAttached)
+            {
+                // Display the current frame rate counters.
+                Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+                // Show the areas of the app that are being redrawn in each frame.
+                //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+                // Enable non-production analysis visualization mode,
+                // which shows areas of a page that are handed off to GPU with a colored overlay.
+                //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+                // Prevent the screen from turning off while under the debugger by disabling
+                // the application's idle detection.
+                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+                // and consume battery power when the user is not using the phone.
+                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+            }
+
+        }
+
+        // Code to execute when the application is launching (eg, from Start)
+        // This code will not execute when the application is reactivated
+        private void Application_Launching(object sender, LaunchingEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is activated (brought to foreground)
+        // This code will not execute when the application is first launched
+        private void Application_Activated(object sender, ActivatedEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is deactivated (sent to background)
+        // This code will not execute when the application is closing
+        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is closing (eg, user hit Back)
+        // This code will not execute when the application is deactivated
+        private void Application_Closing(object sender, ClosingEventArgs e)
+        {
+        }
+
+        // Code to execute if a navigation fails
+        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // A navigation has failed; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        // Code to execute on Unhandled Exceptions
+        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // An unhandled exception has occurred; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        #region Phone application initialization
+
+        // Avoid double-initialization
+        private bool phoneApplicationInitialized = false;
+
+        // Do not add any additional code to this method
+        private void InitializePhoneApplication()
+        {
+            if (phoneApplicationInitialized)
+                return;
+
+            // Create the frame but don't set it as RootVisual yet; this allows the splash
+            // screen to remain active until the application is ready to render.
+            RootFrame = new PhoneApplicationFrame();
+            RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+            // Handle navigation failures
+            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+            // Handle reset requests for clearing the backstack
+            RootFrame.Navigated += CheckForResetNavigation;
+
+            // Ensure we don't initialize again
+            phoneApplicationInitialized = true;
+        }
+
+        // Do not add any additional code to this method
+        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+        {
+            // Set the root visual to allow the application to render
+            if (RootVisual != RootFrame)
+                RootVisual = RootFrame;
+
+            // Remove this handler since it is no longer needed
+            RootFrame.Navigated -= CompleteInitializePhoneApplication;
+        }
+
+        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+        {
+            // If the app has received a 'reset' navigation, then we need to check
+            // on the next navigation to see if the page stack should be reset
+            if (e.NavigationMode == NavigationMode.Reset)
+                RootFrame.Navigated += ClearBackStackAfterReset;
+        }
+
+        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+        {
+            // Unregister the event so it doesn't get called again
+            RootFrame.Navigated -= ClearBackStackAfterReset;
+
+            // Only clear the stack for 'new' (forward) and 'refresh' navigations
+            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+                return;
+
+            // For UI consistency, clear the entire page stack
+            while (RootFrame.RemoveBackEntry() != null)
+            {
+                ; // do nothing
+            }
+        }
+
+        #endregion
+
+        // Initialize the app's font and flow direction as defined in its localized resource strings.
+        //
+        // To ensure that the font of your application is aligned with its supported languages and that the
+        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+        // file's culture. For example:
+        //
+        // AppResources.es-ES.resx
+        //    ResourceLanguage's value should be "es-ES"
+        //    ResourceFlowDirection's value should be "LeftToRight"
+        //
+        // AppResources.ar-SA.resx
+        //     ResourceLanguage's value should be "ar-SA"
+        //     ResourceFlowDirection's value should be "RightToLeft"
+        //
+        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+        //
+        private void InitializeLanguage()
+        {
+            try
+            {
+                // Set the font to match the display language defined by the
+                // ResourceLanguage resource string for each supported language.
+                //
+                // Fall back to the font of the neutral language if the Display
+                // language of the phone is not supported.
+                //
+                // If a compiler error is hit then ResourceLanguage is missing from
+                // the resource file.
+                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+                // Set the FlowDirection of all elements under the root frame based
+                // on the ResourceFlowDirection resource string for each
+                // supported language.
+                //
+                // If a compiler error is hit then ResourceFlowDirection is missing from
+                // the resource file.
+                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+                RootFrame.FlowDirection = flow;
+            }
+            catch
+            {
+                // If an exception is caught here it is most likely due to either
+                // ResourceLangauge not being correctly set to a supported language
+                // code or ResourceFlowDirection is set to a value other than LeftToRight
+                // or RightToLeft.
+
+                if (Debugger.IsAttached)
+                {
+                    Debugger.Break();
+                }
+
+                throw;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png
new file mode 100644 (file)
index 0000000..f7d2e97
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png
new file mode 100644 (file)
index 0000000..7d95d4e
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644 (file)
index 0000000..e0c59ac
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644 (file)
index 0000000..e93b89d
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644 (file)
index 0000000..550b1b5
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644 (file)
index 0000000..686e6b5
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png
new file mode 100644 (file)
index 0000000..d4b5ede
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj
new file mode 100644 (file)
index 0000000..eef48a4
--- /dev/null
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">ARM</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1B061ADC-B891-4E69-B96A-E054C80333C0}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Connect4MonoGame</RootNamespace>
+    <AssemblyName>Connect4MonoGame</AssemblyName>
+    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
+    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <SilverlightApplication>true</SilverlightApplication>
+    <SupportedCultures>
+    </SupportedCultures>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>Connect4MonoGame_$(Configuration)_$(Platform).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>Connect4MonoGame.App</SilverlightAppEntry>
+    <ValidateXaml>true</ValidateXaml>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\WindowsPhone\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\WindowsPhone\x86\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\WindowsPhone\ARM\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\WindowsPhone\ARM\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="LocalizedStrings.cs" />
+    <Compile Include="GamePage.xaml.cs">
+      <DependentUpon>GamePage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Game1.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </ApplicationDefinition>
+    <Page Include="GamePage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\WMAppManifest.xml">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\AlignmentGrid.png" />
+    <Content Include="Assets\ApplicationIcon.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\blupiece.png" />
+    <Content Include="Content\redpiece.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+    <Reference Include="MonoGame.Framework, Version=3.1.2.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\MonoGame\MonoGame.Framework\bin\WindowsPhone\x86\Debug\MonoGame.Framework.dll</HintPath>
+      <EmbedInteropTypes>False</EmbedInteropTypes>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
+  <Target Name="MonoGame_RemoveXnaAssemblies" AfterTargets="ImplicitlyExpandTargetFramework">
+    <Message Text="MonoGame - Removing XNA Assembly references!" Importance="normal" />
+    <ItemGroup>
+      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.dll'" />
+      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServices.dll'" />
+      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServicesExtensions.dll'" />
+      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.Input.Touch.dll'" />
+      <ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.MediaLibraryExtensions.dll'" />
+    </ItemGroup>
+  </Target>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions />
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png
new file mode 100644 (file)
index 0000000..4564d4c
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/blupiece.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png
new file mode 100644 (file)
index 0000000..b1224bd
Binary files /dev/null and b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Content/redpiece.png differ
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Game1.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Game1.cs
new file mode 100644 (file)
index 0000000..0dce598
--- /dev/null
@@ -0,0 +1,91 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System.Windows;
+
+namespace Connect4MonoGame
+{
+    /// <summary>
+    /// This is the main type for your game
+    /// </summary>
+    public class Game1 : Game
+    {
+        GraphicsDeviceManager _graphics;
+        SpriteBatch _spriteBatch;
+        Texture2D texture;
+
+        public Game1()
+        {
+            _graphics = new GraphicsDeviceManager(this);
+            Content.RootDirectory = "Content";
+
+            _graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft;
+        }
+
+        /// <summary>
+        /// Allows the game to perform any initialization it needs to before starting to run.
+        /// This is where it can query for any required services and load any non-graphic
+        /// related content.  Calling base.Initialize will enumerate through any components
+        /// and initialize them as well.
+        /// </summary>
+        protected override void Initialize()
+        {
+            // TODO: Add your initialization logic here
+
+            base.Initialize();
+        }
+
+        /// <summary>
+        /// LoadContent will be called once per game and is the place to load
+        /// all of your content.
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Create a new SpriteBatch, which can be used to draw textures.
+            _spriteBatch = new SpriteBatch(GraphicsDevice);
+
+            //texture = new Texture2D(_spriteBatch.GraphicsDevice, 1, 1);
+            //texture.SetData<Color>(new Color[] { Color.Yellow });
+            texture = Content.Load<Texture2D>("redpiece.png");
+            
+
+            // TODO: use this.Content to load your game content here
+        }
+
+        /// <summary>
+        /// UnloadContent will be called once per game and is the place to unload
+        /// all content.
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // TODO: Unload any non ContentManager content here
+        }
+
+        /// <summary>
+        /// Allows the game to run logic such as updating the world,
+        /// checking for collisions, gathering input, and playing audio.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Update(GameTime gameTime)
+        {
+            // TODO: Add your update logic here
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// This is called when the game should draw itself.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Draw(GameTime gameTime)
+        {
+            GraphicsDevice.Clear(Color.CornflowerBlue);
+            
+            // TODO: Add your drawing code here
+            _spriteBatch.Begin();
+            _spriteBatch.Draw(texture, new Rectangle(120, 120, 300, 300), Color.Yellow);
+            _spriteBatch.End();
+            base.Draw(gameTime);
+            
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml
new file mode 100644 (file)
index 0000000..6fe3197
--- /dev/null
@@ -0,0 +1,62 @@
+<phone:PhoneApplicationPage
+    x:Class="Connect4MonoGame.GamePage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="Landscape" Orientation="Landscape"
+    shell:SystemTray.IsVisible="False">
+
+    <!--LayoutRoot is the root grid where all page content is placed-->
+    <DrawingSurfaceBackgroundGrid x:Name="XnaSurface" Background="Transparent">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- LOCALIZATION NOTE:
+            To localize the displayed strings copy their values to appropriately named
+            keys in the app's neutral language resource file (AppResources.resx) then
+            replace the hard-coded text value between the attributes' quotation marks
+            with the binding clause whose path points to that string name.
+
+            For example:
+
+                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
+
+            This binding points to the template's string resource named "ApplicationTitle".
+
+            Adding supported languages in the Project Properties tab will create a
+            new resx file per language that can carry the translated values of your
+            UI strings. The binding in these examples will cause the value of the
+            attributes to be drawn from the .resx file that matches the
+            CurrentUICulture of the app at run time.
+         -->
+
+        <!--TitlePanel contains the name of the application and page title-->
+        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
+            <TextBlock Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
+            <TextBlock Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+        </StackPanel>
+
+        <!--ContentPanel - place additional content here-->
+        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+
+        </Grid>
+
+        <!--Uncomment to see an alignment grid to help ensure your controls are
+            aligned on common boundaries.  The image has a top margin of -32px to
+            account for the System Tray. Set this to 0 (or remove the margin altogether)
+            if the System Tray is hidden.
+
+            Before shipping remove this XAML and the image itself.-->
+        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
+    </DrawingSurfaceBackgroundGrid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs
new file mode 100644 (file)
index 0000000..dc8b81e
--- /dev/null
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Microsoft.Xna.Framework;
+using MonoGame.Framework.WindowsPhone;
+using Connect4MonoGame.Resources;
+
+namespace Connect4MonoGame
+{
+    public partial class GamePage : PhoneApplicationPage
+    {
+        private Game1 _game;
+
+        // Constructor
+        public GamePage()
+        {
+            InitializeComponent();
+
+            _game = XamlGame<Game1>.Create("", XnaSurface);
+
+            // Sample code to localize the ApplicationBar
+            //BuildLocalizedApplicationBar();
+        }
+
+        // Sample code for building a localized ApplicationBar
+        //private void BuildLocalizedApplicationBar()
+        //{
+        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
+        //    ApplicationBar = new ApplicationBar();
+
+        //    // Create a new button and set the text value to the localized string from AppResources.
+        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
+        //    appBarButton.Text = AppResources.AppBarButtonText;
+        //    ApplicationBar.Buttons.Add(appBarButton);
+
+        //    // Create a new menu item with the localized string from AppResources.
+        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
+        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
+        //}
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs
new file mode 100644 (file)
index 0000000..8ac08f7
--- /dev/null
@@ -0,0 +1,14 @@
+using Connect4MonoGame.Resources;
+
+namespace Connect4MonoGame
+{
+    /// <summary>
+    /// Provides access to string resources.
+    /// </summary>
+    public class LocalizedStrings
+    {
+        private static AppResources _localizedResources = new AppResources();
+
+        public AppResources LocalizedResources { get { return _localizedResources; } }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml
new file mode 100644 (file)
index 0000000..6712a11
--- /dev/null
@@ -0,0 +1,6 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+>
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c09b700
--- /dev/null
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Connect4MonoGame")]
+[assembly: AssemblyProduct("Connect4MonoGame")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("92d9cb94-79bd-41a2-9323-da24110f57eb")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml
new file mode 100644 (file)
index 0000000..69ebedb
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+  <DefaultLanguage xmlns="" code="en-US"/>
+  <App xmlns="" ProductID="{f13744ce-a3b0-426b-8a4a-cf6f482b80cd}" Title="Connect4MonoGame" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="Connect4MonoGame author" Description="Sample description" Publisher="Connect4MonoGame" PublisherID="{0df4bf76-7146-42eb-ba7c-83daa7249a23}">
+    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
+    <Capabilities>
+      <Capability Name="ID_CAP_NETWORKING"/>
+      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
+      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
+      <Capability Name="ID_CAP_SENSORS"/>
+      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
+    </Capabilities>
+    <Tasks>
+      <DefaultTask  Name ="_default" NavigationPage="GamePage.xaml"/>
+    </Tasks>
+    <Tokens>
+      <PrimaryToken TokenID="Connect4MonoGameToken" TaskName="_default">
+        <TemplateFlip>
+          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
+          <Count>0</Count>
+          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
+          <Title>Connect4MonoGame</Title>
+          <BackContent></BackContent>
+          <BackBackgroundImageURI></BackBackgroundImageURI>
+          <BackTitle></BackTitle>
+          <DeviceLockImageURI></DeviceLockImageURI>
+          <HasLarge></HasLarge>
+        </TemplateFlip>
+      </PrimaryToken>
+    </Tokens>
+    <ScreenResolutions>
+      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
+    </ScreenResolutions>
+  </App>
+</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs
new file mode 100644 (file)
index 0000000..241ac84
--- /dev/null
@@ -0,0 +1,127 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.17626
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Connect4MonoGame.Resources
+{
+    using System;
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if (object.ReferenceEquals(resourceMan, null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connect4MonoGame.Resources.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to LeftToRight.
+        /// </summary>
+        public static string ResourceFlowDirection
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to us-EN.
+        /// </summary>
+        public static string ResourceLanguage
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to MY APPLICATION.
+        /// </summary>
+        public static string ApplicationTitle
+        {
+            get
+            {
+                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to button.
+        /// </summary>
+        public static string AppBarButtonText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to menu item.
+        /// </summary>
+        public static string AppBarMenuItemText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx b/WindowsPhone/WP8/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx
new file mode 100644 (file)
index 0000000..529a194
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>en-US</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>MY APPLICATION</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>add</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Menu Item</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp.sln b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp.sln
new file mode 100644 (file)
index 0000000..1934dd4
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVMTestApp", "MVVMTestApp\MVVMTestApp.csproj", "{EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.ActiveCfg = Debug|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.Build.0 = Debug|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|ARM.Deploy.0 = Debug|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.ActiveCfg = Debug|x86
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.Build.0 = Debug|x86
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Debug|x86.Deploy.0 = Debug|x86
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.ActiveCfg = Release|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.Build.0 = Release|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|ARM.Deploy.0 = Release|ARM
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.ActiveCfg = Release|x86
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.Build.0 = Release|x86
+               {EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml
new file mode 100644 (file)
index 0000000..860c64f
--- /dev/null
@@ -0,0 +1,20 @@
+<Application
+    x:Class="MVVMTestApp.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
+
+    <!--Application Resources-->
+    <Application.Resources>
+        <local:LocalizedStrings xmlns:local="clr-namespace:MVVMTestApp" x:Key="LocalizedStrings"/>
+    </Application.Resources>
+
+    <Application.ApplicationLifetimeObjects>
+        <!--Required object that handles lifetime events for the application-->
+        <shell:PhoneApplicationService
+            Launching="Application_Launching" Closing="Application_Closing"
+            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
+    </Application.ApplicationLifetimeObjects>
+
+</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/App.xaml.cs
new file mode 100644 (file)
index 0000000..bd5076b
--- /dev/null
@@ -0,0 +1,225 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using MVVMTestApp.Resources;
+
+namespace MVVMTestApp
+{
+    public partial class App : Application
+    {
+        /// <summary>
+        /// Provides easy access to the root frame of the Phone Application.
+        /// </summary>
+        /// <returns>The root frame of the Phone Application.</returns>
+        public static PhoneApplicationFrame RootFrame { get; private set; }
+
+        /// <summary>
+        /// Constructor for the Application object.
+        /// </summary>
+        public App()
+        {
+            // Global handler for uncaught exceptions.
+            UnhandledException += Application_UnhandledException;
+
+            // Standard XAML initialization
+            InitializeComponent();
+
+            // Phone-specific initialization
+            InitializePhoneApplication();
+
+            // Language display initialization
+            InitializeLanguage();
+
+            // Show graphics profiling information while debugging.
+            if (Debugger.IsAttached)
+            {
+                // Display the current frame rate counters.
+                Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+                // Show the areas of the app that are being redrawn in each frame.
+                //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+                // Enable non-production analysis visualization mode,
+                // which shows areas of a page that are handed off to GPU with a colored overlay.
+                //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+                // Prevent the screen from turning off while under the debugger by disabling
+                // the application's idle detection.
+                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+                // and consume battery power when the user is not using the phone.
+                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+            }
+
+        }
+
+        // Code to execute when the application is launching (eg, from Start)
+        // This code will not execute when the application is reactivated
+        private void Application_Launching(object sender, LaunchingEventArgs e)
+        {
+            StateUtilities.IsLaunching = true;
+        }
+
+        // Code to execute when the application is activated (brought to foreground)
+        // This code will not execute when the application is first launched
+        private void Application_Activated(object sender, ActivatedEventArgs e)
+        {
+            StateUtilities.IsLaunching = false;
+        }
+
+        // Code to execute when the application is deactivated (sent to background)
+        // This code will not execute when the application is closing
+        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is closing (eg, user hit Back)
+        // This code will not execute when the application is deactivated
+        private void Application_Closing(object sender, ClosingEventArgs e)
+        {
+        }
+
+        // Code to execute if a navigation fails
+        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // A navigation has failed; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        // Code to execute on Unhandled Exceptions
+        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // An unhandled exception has occurred; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        #region Phone application initialization
+
+        // Avoid double-initialization
+        private bool phoneApplicationInitialized = false;
+
+        // Do not add any additional code to this method
+        private void InitializePhoneApplication()
+        {
+            if (phoneApplicationInitialized)
+                return;
+
+            // Create the frame but don't set it as RootVisual yet; this allows the splash
+            // screen to remain active until the application is ready to render.
+            RootFrame = new PhoneApplicationFrame();
+            RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+            // Handle navigation failures
+            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+            // Handle reset requests for clearing the backstack
+            RootFrame.Navigated += CheckForResetNavigation;
+
+            // Ensure we don't initialize again
+            phoneApplicationInitialized = true;
+        }
+
+        // Do not add any additional code to this method
+        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+        {
+            // Set the root visual to allow the application to render
+            if (RootVisual != RootFrame)
+                RootVisual = RootFrame;
+
+            // Remove this handler since it is no longer needed
+            RootFrame.Navigated -= CompleteInitializePhoneApplication;
+        }
+
+        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+        {
+            // If the app has received a 'reset' navigation, then we need to check
+            // on the next navigation to see if the page stack should be reset
+            if (e.NavigationMode == NavigationMode.Reset)
+                RootFrame.Navigated += ClearBackStackAfterReset;
+        }
+
+        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+        {
+            // Unregister the event so it doesn't get called again
+            RootFrame.Navigated -= ClearBackStackAfterReset;
+
+            // Only clear the stack for 'new' (forward) and 'refresh' navigations
+            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+                return;
+
+            // For UI consistency, clear the entire page stack
+            while (RootFrame.RemoveBackEntry() != null)
+            {
+                ; // do nothing
+            }
+        }
+
+        #endregion
+
+        // Initialize the app's font and flow direction as defined in its localized resource strings.
+        //
+        // To ensure that the font of your application is aligned with its supported languages and that the
+        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+        // file's culture. For example:
+        //
+        // AppResources.es-ES.resx
+        //    ResourceLanguage's value should be "es-ES"
+        //    ResourceFlowDirection's value should be "LeftToRight"
+        //
+        // AppResources.ar-SA.resx
+        //     ResourceLanguage's value should be "ar-SA"
+        //     ResourceFlowDirection's value should be "RightToLeft"
+        //
+        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+        //
+        private void InitializeLanguage()
+        {
+            try
+            {
+                // Set the font to match the display language defined by the
+                // ResourceLanguage resource string for each supported language.
+                //
+                // Fall back to the font of the neutral language if the Display
+                // language of the phone is not supported.
+                //
+                // If a compiler error is hit then ResourceLanguage is missing from
+                // the resource file.
+                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+                // Set the FlowDirection of all elements under the root frame based
+                // on the ResourceFlowDirection resource string for each
+                // supported language.
+                //
+                // If a compiler error is hit then ResourceFlowDirection is missing from
+                // the resource file.
+                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+                RootFrame.FlowDirection = flow;
+            }
+            catch
+            {
+                // If an exception is caught here it is most likely due to either
+                // ResourceLangauge not being correctly set to a supported language
+                // code or ResourceFlowDirection is set to a value other than LeftToRight
+                // or RightToLeft.
+
+                if (Debugger.IsAttached)
+                {
+                    Debugger.Break();
+                }
+
+                throw;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/AppBarSave.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/AppBarSave.png
new file mode 100644 (file)
index 0000000..8e31a2a
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/AppBarSave.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png
new file mode 100644 (file)
index 0000000..f7d2e97
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/AlignmentGrid.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png
new file mode 100644 (file)
index 0000000..7d95d4e
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/ApplicationIcon.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644 (file)
index 0000000..e0c59ac
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644 (file)
index 0000000..e93b89d
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644 (file)
index 0000000..550b1b5
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644 (file)
index 0000000..686e6b5
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png
new file mode 100644 (file)
index 0000000..d4b5ede
Binary files /dev/null and b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Assets/Tiles/IconicTileSmall.png differ
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/LocalizedStrings.cs
new file mode 100644 (file)
index 0000000..cc539f1
--- /dev/null
@@ -0,0 +1,14 @@
+using MVVMTestApp.Resources;
+
+namespace MVVMTestApp
+{
+    /// <summary>
+    /// Provides access to string resources.
+    /// </summary>
+    public class LocalizedStrings
+    {
+        private static AppResources _localizedResources = new AppResources();
+
+        public AppResources LocalizedResources { get { return _localizedResources; } }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MVVMTestApp.csproj
new file mode 100644 (file)
index 0000000..df5b852
--- /dev/null
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{EFF1A25D-BB2F-4209-89D1-BD93CE8A748A}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MVVMTestApp</RootNamespace>
+    <AssemblyName>MVVMTestApp</AssemblyName>
+    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
+    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <SilverlightApplication>true</SilverlightApplication>
+    <SupportedCultures>
+    </SupportedCultures>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>MVVMTestApp_$(Configuration)_$(Platform).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>MVVMTestApp.App</SilverlightAppEntry>
+    <ValidateXaml>true</ValidateXaml>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\ARM\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\ARM\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="LocalizedStrings.cs" />
+    <Compile Include="MainPage.xaml.cs">
+      <DependentUpon>MainPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Model\Accomplishment.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="StateUtilities.cs" />
+    <Compile Include="ViewModel\ViewModel.cs" />
+    <Compile Include="View\ItemView.xaml.cs">
+      <DependentUpon>ItemView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="View\LevelView.xaml.cs">
+      <DependentUpon>LevelView.xaml</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </ApplicationDefinition>
+    <Page Include="MainPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="View\ItemView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="View\LevelView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\WMAppManifest.xml">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\AlignmentGrid.png" />
+    <Content Include="Assets\ApplicationIcon.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="AppBarSave.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions />
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml
new file mode 100644 (file)
index 0000000..a941530
--- /dev/null
@@ -0,0 +1,75 @@
+<phone:PhoneApplicationPage
+    x:Class="MVVMTestApp.MainPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:views="clr-namespace:MVVMTestApp.View"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="Portrait" Orientation="Portrait"
+    shell:SystemTray.IsVisible="True">
+
+    <phone:PhoneApplicationPage.ApplicationBar>
+        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" >
+            <shell:ApplicationBarIconButton IconUri="AppBarSave.png" Text="Save"  Click="AppBarSave_Click" />
+        </shell:ApplicationBar>
+    </phone:PhoneApplicationPage.ApplicationBar>
+    
+    <!--LayoutRoot is the root grid where all page content is placed-->
+    <Grid x:Name="LayoutRoot" Background="Transparent">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- LOCALIZATION NOTE:
+            To localize the displayed strings copy their values to appropriately named
+            keys in the app's neutral language resource file (AppResources.resx) then
+            replace the hard-coded text value between the attributes' quotation marks
+            with the binding clause whose path points to that string name.
+
+            For example:
+
+                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
+
+            This binding points to the template's string resource named "ApplicationTitle".
+
+            Adding supported languages in the Project Properties tab will create a
+            new resx file per language that can carry the translated values of your
+            UI strings. The binding in these examples will cause the value of the
+            attributes to be drawn from the .resx file that matches the
+            CurrentUICulture of the app at run time.
+         -->
+
+        <!--TitlePanel contains the name of the application and page title-->
+        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
+            <TextBlock Text="MVVM Test App" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
+            <TextBlock Text="game tracker" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+        </StackPanel>
+
+        <!--ContentPanel - place additional content here-->
+        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+            <StackPanel>
+                <TextBlock Text="Items Collected" Foreground="{StaticResource PhoneAccentBrush}" Style="{StaticResource PhoneTextLargeStyle}" />
+                <views:ItemView x:Name="ItemViewOnPage" Height="200"/>
+
+                <TextBlock Text="Levels Completed" Foreground="{StaticResource PhoneAccentBrush}" Style="{StaticResource PhoneTextLargeStyle}" />
+                <views:LevelView x:Name="LevelViewOnPage" Height="200"/>
+            </StackPanel>
+        </Grid>
+
+        <!--Uncomment to see an alignment grid to help ensure your controls are
+            aligned on common boundaries.  The image has a top margin of -32px to
+            account for the System Tray. Set this to 0 (or remove the margin altogether)
+            if the System Tray is hidden.
+
+            Before shipping remove this XAML and the image itself.-->
+        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/MainPage.xaml.cs
new file mode 100644 (file)
index 0000000..b8946bc
--- /dev/null
@@ -0,0 +1,104 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using MVVMTestApp.Resources;
+using MVVMTestApp.ViewModelNamespace;
+
+namespace MVVMTestApp
+{
+    public partial class MainPage : PhoneApplicationPage
+    {
+        private ViewModel vm;
+
+        // Constructor
+        public MainPage()
+        {
+            InitializeComponent();
+            vm = new ViewModel();
+
+            // Sample code to localize the ApplicationBar
+            //BuildLocalizedApplicationBar();
+        }
+
+
+        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
+        {
+            base.OnNavigatedTo(e);
+
+            if (!StateUtilities.IsLaunching && this.State.ContainsKey("Accomplishments"))
+            {
+                // Old instance of the application
+                // The user started the application from the Back button.
+
+                vm = (ViewModel)this.State["Accomplishments"];
+                MessageBox.Show("Got data from state");
+            }
+            else
+            {
+                // New instance of the application
+                // The user started the application from the application list,
+                // or there is no saved state available.
+
+                vm.GetAccomplishments();
+                MessageBox.Show("Did not get data from state");
+            }
+
+
+            // There are two different views, but only one view model.
+            // So, use LINQ queries to populate the views.
+
+            // Set the data context for the Item view.
+            ItemViewOnPage.DataContext = from Accomplishment in vm.Accomplishments where Accomplishment.Type == "Item" select Accomplishment;
+
+            // Set the data context for the Level view.
+            LevelViewOnPage.DataContext = from Accomplishment in vm.Accomplishments where Accomplishment.Type == "Level" select Accomplishment;
+
+            // If there is only one view, you could use the following code
+            // to populate the view.
+            //AccomplishmentViewOnPage.DataContext = vm.Accomplishments;
+        }
+
+        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
+        {
+            base.OnNavigatedFrom(e);
+
+            if (this.State.ContainsKey("Accomplishments"))
+            {
+                this.State["Accomplishments"] = vm;
+            }
+            else
+            {
+                this.State.Add("Accomplishments", vm);
+            }
+
+            StateUtilities.IsLaunching = false;
+        }
+
+        private void AppBarSave_Click(object sender, EventArgs e)
+        {
+            vm.SaveAccomplishments();
+        }
+
+        // Sample code for building a localized ApplicationBar
+        //private void BuildLocalizedApplicationBar()
+        //{
+        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
+        //    ApplicationBar = new ApplicationBar();
+
+        //    // Create a new button and set the text value to the localized string from AppResources.
+        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
+        //    appBarButton.Text = AppResources.AppBarButtonText;
+        //    ApplicationBar.Buttons.Add(appBarButton);
+
+        //    // Create a new menu item with the localized string from AppResources.
+        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
+        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
+        //}
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Model/Accomplishment.cs
new file mode 100644 (file)
index 0000000..9d8cf60
--- /dev/null
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MVVMTestApp.Model
+{
+    class Accomplishment : INotifyPropertyChanged
+    {
+        // The name of the accomplishment.
+        public string Name { get; set; }
+
+        // The type of the accomplishment, Item or Level.
+        public string Type { get; set; }
+
+        // The number of each item that has been collected.
+        private int _count;
+        public int Count
+        {
+            get
+            {
+                return _count;
+            }
+            set
+            {
+                _count = value;
+                RaisePropertyChanged("Count");
+            }
+        }
+
+        // Whether a level has been completed or not
+        private bool _completed;
+        public bool Completed
+        {
+            get
+            {
+                return _completed;
+            }
+            set
+            {
+                _completed = value;
+                RaisePropertyChanged("Completed");
+            }
+        }
+
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        private void RaisePropertyChanged(string propertyName)
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+
+
+        // Create a copy of an accomplishment to save.
+        // If your object is databound, this copy is not databound.
+        public Accomplishment GetCopy()
+        {
+            Accomplishment copy = (Accomplishment)this.MemberwiseClone();
+            return copy;
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AppManifest.xml
new file mode 100644 (file)
index 0000000..6712a11
--- /dev/null
@@ -0,0 +1,6 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+>
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..639701a
--- /dev/null
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MVVMTestApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MVVMTestApp")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e647b439-ea46-4b51-ad68-e31c1b5f901d")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Properties/WMAppManifest.xml
new file mode 100644 (file)
index 0000000..3e1ae86
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+  <DefaultLanguage xmlns="" code="en-US"/>
+  <App xmlns="" ProductID="{eff1a25d-bb2f-4209-89d1-bd93ce8a748a}" Title="MVVMTestApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="MVVMTestApp author" Description="Sample description" Publisher="MVVMTestApp" PublisherID="{fc116619-0493-4c77-855b-0a8bf29569f4}">
+    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
+    <Capabilities>
+      <Capability Name="ID_CAP_NETWORKING"/>
+      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
+      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
+      <Capability Name="ID_CAP_SENSORS"/>
+      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
+    </Capabilities>
+    <Tasks>
+      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
+    </Tasks>
+    <Tokens>
+      <PrimaryToken TokenID="MVVMTestAppToken" TaskName="_default">
+        <TemplateFlip>
+          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
+          <Count>0</Count>
+          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
+          <Title>MVVMTestApp</Title>
+          <BackContent></BackContent>
+          <BackBackgroundImageURI></BackBackgroundImageURI>
+          <BackTitle></BackTitle>
+          <DeviceLockImageURI></DeviceLockImageURI>
+          <HasLarge></HasLarge>
+        </TemplateFlip>
+      </PrimaryToken>
+    </Tokens>
+    <ScreenResolutions>
+      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
+    </ScreenResolutions>
+  </App>
+</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.Designer.cs
new file mode 100644 (file)
index 0000000..794cf98
--- /dev/null
@@ -0,0 +1,127 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.17626
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MVVMTestApp.Resources
+{
+    using System;
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if (object.ReferenceEquals(resourceMan, null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MVVMTestApp.Resources.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to LeftToRight.
+        /// </summary>
+        public static string ResourceFlowDirection
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to us-EN.
+        /// </summary>
+        public static string ResourceLanguage
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to MY APPLICATION.
+        /// </summary>
+        public static string ApplicationTitle
+        {
+            get
+            {
+                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to button.
+        /// </summary>
+        public static string AppBarButtonText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to menu item.
+        /// </summary>
+        public static string AppBarMenuItemText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/Resources/AppResources.resx
new file mode 100644 (file)
index 0000000..529a194
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>en-US</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>MY APPLICATION</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>add</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Menu Item</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/StateUtilities.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/StateUtilities.cs
new file mode 100644 (file)
index 0000000..d0cad22
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MVVMTestApp
+{
+    public static class StateUtilities
+    {
+        private static Boolean isLaunching;
+
+        public static Boolean IsLaunching
+        {
+            get { return isLaunching; }
+            set { isLaunching = value; }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml
new file mode 100644 (file)
index 0000000..e4a2b38
--- /dev/null
@@ -0,0 +1,30 @@
+<UserControl x:Class="MVVMTestApp.View.ItemView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    d:DesignHeight="480" d:DesignWidth="480">
+    
+    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
+        <ListBox ItemsSource="{Binding}">
+            <ListBox.ItemTemplate>
+                <DataTemplate>
+                    <Grid>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="200"/>
+                            <ColumnDefinition Width="80"/>
+                            <ColumnDefinition Width="100"/>
+                        </Grid.ColumnDefinitions>
+                        <TextBlock x:Name="Item" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" />
+                        <TextBox x:Name="Count" Text="{Binding Path=Count, Mode=TwoWay}" Grid.Column="1" TextAlignment="Center" InputScope="Number"/>
+                        <TextBlock x:Name="Check" Text="{Binding Path=Count, Mode=OneWay}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" />
+                    </Grid>
+                </DataTemplate>
+            </ListBox.ItemTemplate>
+        </ListBox>
+    </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/ItemView.xaml.cs
new file mode 100644 (file)
index 0000000..7bb34e7
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+
+namespace MVVMTestApp.View
+{
+    public partial class ItemView : UserControl
+    {
+        public ItemView()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml
new file mode 100644 (file)
index 0000000..b050de8
--- /dev/null
@@ -0,0 +1,35 @@
+<UserControl x:Class="MVVMTestApp.View.LevelView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:src="clr-namespace:MVVMTestApp.View"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    d:DesignHeight="480" d:DesignWidth="480">
+
+    <UserControl.Resources>
+        <src:BoolOpposite x:Key="BoolOpposite"/>
+    </UserControl.Resources>
+    
+    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
+        <ListBox ItemsSource="{Binding}">
+            <ListBox.ItemTemplate>
+                <DataTemplate>
+                    <Grid>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="200"/>
+                            <ColumnDefinition Width="80"/>
+                            <ColumnDefinition Width="100"/>
+                        </Grid.ColumnDefinitions>
+                        <TextBlock x:Name="Level" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                        <CheckBox x:Name="Completed" IsChecked="{Binding Path=Completed, Mode=TwoWay}" Grid.Column="1" HorizontalAlignment="Center" IsEnabled="{Binding Path=Completed, Converter={StaticResource BoolOpposite}}"/>
+                        <TextBlock x:Name="Check" Text="{Binding Path=Completed, Mode=OneWay}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                    </Grid>
+                </DataTemplate>
+            </ListBox.ItemTemplate>
+        </ListBox>
+    </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/View/LevelView.xaml.cs
new file mode 100644 (file)
index 0000000..c9f6fb3
--- /dev/null
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+
+namespace MVVMTestApp.View
+{
+    public partial class LevelView : UserControl
+    {
+        public LevelView()
+        {
+            InitializeComponent();
+        }
+    }
+
+
+    public class BoolOpposite : System.Windows.Data.IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            bool b = (bool)value;
+            return !b;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            string s = value as string;
+            bool b;
+
+            if (bool.TryParse(s, out b))
+            {
+                return !b;
+            }
+            return false;
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs b/WindowsPhone/WP8/MVVMTestApp/MVVMTestApp/ViewModel/ViewModel.cs
new file mode 100644 (file)
index 0000000..4559020
--- /dev/null
@@ -0,0 +1,84 @@
+using MVVMTestApp.Model;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO.IsolatedStorage;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace MVVMTestApp.ViewModelNamespace
+{
+    class ViewModel
+    {
+        public ObservableCollection<Accomplishment> Accomplishments { get; set; }
+
+        public void GetAccomplishments()
+        {
+            if (IsolatedStorageSettings.ApplicationSettings.Count > 0)
+            {
+                GetSavedAccomplishments();
+            }
+            else
+            {
+                GetDefaultAccomplishments();
+            }
+        }
+
+
+        public void GetDefaultAccomplishments()
+        {
+            ObservableCollection<Accomplishment> a = new ObservableCollection<Accomplishment>();
+
+            // Items to collect
+            a.Add(new Accomplishment() { Name = "Potions", Type = "Item" });
+            a.Add(new Accomplishment() { Name = "Coins", Type = "Item" });
+            a.Add(new Accomplishment() { Name = "Hearts", Type = "Item" });
+            a.Add(new Accomplishment() { Name = "Swords", Type = "Item" });
+            a.Add(new Accomplishment() { Name = "Shields", Type = "Item" });
+
+            // Levels to complete
+            a.Add(new Accomplishment() { Name = "Level 1", Type = "Level" });
+            a.Add(new Accomplishment() { Name = "Level 2", Type = "Level" });
+            a.Add(new Accomplishment() { Name = "Level 3", Type = "Level" });
+
+            Accomplishments = a;
+            MessageBox.Show("Got accomplishments from default");
+        }
+
+
+        public void GetSavedAccomplishments()
+        {
+            ObservableCollection<Accomplishment> a = new ObservableCollection<Accomplishment>();
+
+            foreach (Object o in IsolatedStorageSettings.ApplicationSettings.Values)
+            {
+                a.Add((Accomplishment)o);
+            }
+
+            Accomplishments = a;
+            MessageBox.Show("Got accomplishments from storage");
+        }
+
+        public void SaveAccomplishments()
+        {
+            IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
+
+            foreach (Accomplishment a in Accomplishments)
+            {
+                if (settings.Contains(a.Name))
+                {
+                    settings[a.Name] = a;
+                }
+                else
+                {
+                    settings.Add(a.Name, a.GetCopy());
+                }
+            }
+
+            settings.Save();
+            MessageBox.Show("Finished saving accomplishments");
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp.sln b/WindowsPhone/WP8/MyFirstApp/MyFirstApp.sln
new file mode 100644 (file)
index 0000000..758af47
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFirstApp", "MyFirstApp\MyFirstApp.csproj", "{F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.ActiveCfg = Debug|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Build.0 = Debug|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Deploy.0 = Debug|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.ActiveCfg = Debug|x86
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Build.0 = Debug|x86
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Deploy.0 = Debug|x86
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.ActiveCfg = Release|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Build.0 = Release|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Deploy.0 = Release|ARM
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.ActiveCfg = Release|x86
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Build.0 = Release|x86
+               {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml
new file mode 100644 (file)
index 0000000..6bf39dd
--- /dev/null
@@ -0,0 +1,20 @@
+<Application
+    x:Class="MyFirstApp.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
+
+    <!--Application Resources-->
+    <Application.Resources>
+        <local:LocalizedStrings xmlns:local="clr-namespace:MyFirstApp" x:Key="LocalizedStrings"/>
+    </Application.Resources>
+
+    <Application.ApplicationLifetimeObjects>
+        <!--Required object that handles lifetime events for the application-->
+        <shell:PhoneApplicationService
+            Launching="Application_Launching" Closing="Application_Closing"
+            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
+    </Application.ApplicationLifetimeObjects>
+
+</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml.cs b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/App.xaml.cs
new file mode 100644 (file)
index 0000000..d90d8b3
--- /dev/null
@@ -0,0 +1,223 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using MyFirstApp.Resources;
+
+namespace MyFirstApp
+{
+    public partial class App : Application
+    {
+        /// <summary>
+        /// Provides easy access to the root frame of the Phone Application.
+        /// </summary>
+        /// <returns>The root frame of the Phone Application.</returns>
+        public static PhoneApplicationFrame RootFrame { get; private set; }
+
+        /// <summary>
+        /// Constructor for the Application object.
+        /// </summary>
+        public App()
+        {
+            // Global handler for uncaught exceptions.
+            UnhandledException += Application_UnhandledException;
+
+            // Standard XAML initialization
+            InitializeComponent();
+
+            // Phone-specific initialization
+            InitializePhoneApplication();
+
+            // Language display initialization
+            InitializeLanguage();
+
+            // Show graphics profiling information while debugging.
+            if (Debugger.IsAttached)
+            {
+                // Display the current frame rate counters.
+                Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+                // Show the areas of the app that are being redrawn in each frame.
+                //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+                // Enable non-production analysis visualization mode,
+                // which shows areas of a page that are handed off to GPU with a colored overlay.
+                //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+                // Prevent the screen from turning off while under the debugger by disabling
+                // the application's idle detection.
+                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+                // and consume battery power when the user is not using the phone.
+                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+            }
+
+        }
+
+        // Code to execute when the application is launching (eg, from Start)
+        // This code will not execute when the application is reactivated
+        private void Application_Launching(object sender, LaunchingEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is activated (brought to foreground)
+        // This code will not execute when the application is first launched
+        private void Application_Activated(object sender, ActivatedEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is deactivated (sent to background)
+        // This code will not execute when the application is closing
+        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+        {
+        }
+
+        // Code to execute when the application is closing (eg, user hit Back)
+        // This code will not execute when the application is deactivated
+        private void Application_Closing(object sender, ClosingEventArgs e)
+        {
+        }
+
+        // Code to execute if a navigation fails
+        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // A navigation has failed; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        // Code to execute on Unhandled Exceptions
+        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // An unhandled exception has occurred; break into the debugger
+                Debugger.Break();
+            }
+        }
+
+        #region Phone application initialization
+
+        // Avoid double-initialization
+        private bool phoneApplicationInitialized = false;
+
+        // Do not add any additional code to this method
+        private void InitializePhoneApplication()
+        {
+            if (phoneApplicationInitialized)
+                return;
+
+            // Create the frame but don't set it as RootVisual yet; this allows the splash
+            // screen to remain active until the application is ready to render.
+            RootFrame = new PhoneApplicationFrame();
+            RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+            // Handle navigation failures
+            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+            // Handle reset requests for clearing the backstack
+            RootFrame.Navigated += CheckForResetNavigation;
+
+            // Ensure we don't initialize again
+            phoneApplicationInitialized = true;
+        }
+
+        // Do not add any additional code to this method
+        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+        {
+            // Set the root visual to allow the application to render
+            if (RootVisual != RootFrame)
+                RootVisual = RootFrame;
+
+            // Remove this handler since it is no longer needed
+            RootFrame.Navigated -= CompleteInitializePhoneApplication;
+        }
+
+        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+        {
+            // If the app has received a 'reset' navigation, then we need to check
+            // on the next navigation to see if the page stack should be reset
+            if (e.NavigationMode == NavigationMode.Reset)
+                RootFrame.Navigated += ClearBackStackAfterReset;
+        }
+
+        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+        {
+            // Unregister the event so it doesn't get called again
+            RootFrame.Navigated -= ClearBackStackAfterReset;
+
+            // Only clear the stack for 'new' (forward) and 'refresh' navigations
+            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+                return;
+
+            // For UI consistency, clear the entire page stack
+            while (RootFrame.RemoveBackEntry() != null)
+            {
+                ; // do nothing
+            }
+        }
+
+        #endregion
+
+        // Initialize the app's font and flow direction as defined in its localized resource strings.
+        //
+        // To ensure that the font of your application is aligned with its supported languages and that the
+        // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+        // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+        // file's culture. For example:
+        //
+        // AppResources.es-ES.resx
+        //    ResourceLanguage's value should be "es-ES"
+        //    ResourceFlowDirection's value should be "LeftToRight"
+        //
+        // AppResources.ar-SA.resx
+        //     ResourceLanguage's value should be "ar-SA"
+        //     ResourceFlowDirection's value should be "RightToLeft"
+        //
+        // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+        //
+        private void InitializeLanguage()
+        {
+            try
+            {
+                // Set the font to match the display language defined by the
+                // ResourceLanguage resource string for each supported language.
+                //
+                // Fall back to the font of the neutral language if the Display
+                // language of the phone is not supported.
+                //
+                // If a compiler error is hit then ResourceLanguage is missing from
+                // the resource file.
+                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+                // Set the FlowDirection of all elements under the root frame based
+                // on the ResourceFlowDirection resource string for each
+                // supported language.
+                //
+                // If a compiler error is hit then ResourceFlowDirection is missing from
+                // the resource file.
+                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+                RootFrame.FlowDirection = flow;
+            }
+            catch
+            {
+                // If an exception is caught here it is most likely due to either
+                // ResourceLangauge not being correctly set to a supported language
+                // code or ResourceFlowDirection is set to a value other than LeftToRight
+                // or RightToLeft.
+
+                if (Debugger.IsAttached)
+                {
+                    Debugger.Break();
+                }
+
+                throw;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png
new file mode 100644 (file)
index 0000000..f7d2e97
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png
new file mode 100644 (file)
index 0000000..7d95d4e
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644 (file)
index 0000000..e0c59ac
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644 (file)
index 0000000..e93b89d
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644 (file)
index 0000000..550b1b5
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644 (file)
index 0000000..686e6b5
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png
new file mode 100644 (file)
index 0000000..d4b5ede
Binary files /dev/null and b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png differ
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/LocalizedStrings.cs b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/LocalizedStrings.cs
new file mode 100644 (file)
index 0000000..63a8ef9
--- /dev/null
@@ -0,0 +1,14 @@
+using MyFirstApp.Resources;
+
+namespace MyFirstApp
+{
+    /// <summary>
+    /// Provides access to string resources.
+    /// </summary>
+    public class LocalizedStrings
+    {
+        private static AppResources _localizedResources = new AppResources();
+
+        public AppResources LocalizedResources { get { return _localizedResources; } }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml
new file mode 100644 (file)
index 0000000..a1adb74
--- /dev/null
@@ -0,0 +1,65 @@
+<phone:PhoneApplicationPage
+    x:Class="MyFirstApp.MainPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
+    shell:SystemTray.IsVisible="True">
+
+    <!--LayoutRoot is the root grid where all page content is placed-->
+    <Grid x:Name="LayoutRoot" Background="Transparent">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- LOCALIZATION NOTE:
+            To localize the displayed strings copy their values to appropriately named
+            keys in the app's neutral language resource file (AppResources.resx) then
+            replace the hard-coded text value between the attributes' quotation marks
+            with the binding clause whose path points to that string name.
+
+            For example:
+
+                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
+
+            This binding points to the template's string resource named "ApplicationTitle".
+
+            Adding supported languages in the Project Properties tab will create a
+            new resx file per language that can carry the translated values of your
+            UI strings. The binding in these examples will cause the value of the
+            attributes to be drawn from the .resx file that matches the
+            CurrentUICulture of the app at run time.
+         -->
+
+        <!--TitlePanel contains the name of the application and page title-->
+        <StackPanel x:Name="TitlePanel" Margin="12,0,0,0">
+            <TextBlock x:Name="ApplicationTitle" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0" Text="My First Application"/>
+            <TextBlock Text="Mini Browser" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" VerticalAlignment="Bottom"/>
+            <Button x:Name="Go" Content="Go" HorizontalAlignment="Right" Click="Go_Click"/>
+            <TextBox x:Name="URL" Text="http://gumartinm.name" Margin="0,0,170,0" VerticalAlignment="Top"/>
+        </StackPanel>
+
+        <!--ContentPanel - place additional content here-->
+        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+            <phone:WebBrowser x:Name="MiniBrowser" Margin="10,10,24,33"/>
+
+        </Grid>
+
+        <!--Uncomment to see an alignment grid to help ensure your controls are
+            aligned on common boundaries.  The image has a top margin of -32px to
+            account for the System Tray. Set this to 0 (or remove the margin altogether)
+            if the System Tray is hidden.
+
+            Before shipping remove this XAML and the image itself.-->
+        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml.cs b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MainPage.xaml.cs
new file mode 100644 (file)
index 0000000..6d33668
--- /dev/null
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using MyFirstApp.Resources;
+
+namespace MyFirstApp
+{
+    public partial class MainPage : PhoneApplicationPage
+    {
+        // Constructor
+        public MainPage()
+        {
+            InitializeComponent();
+
+            // Sample code to localize the ApplicationBar
+            //BuildLocalizedApplicationBar();
+        }
+
+        private void Go_Click(object sender, RoutedEventArgs e)
+        {
+            string site = URL.Text;
+            MiniBrowser.Navigate(new Uri(site, UriKind.Absolute));
+        }
+
+        // Sample code for building a localized ApplicationBar
+        //private void BuildLocalizedApplicationBar()
+        //{
+        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
+        //    ApplicationBar = new ApplicationBar();
+
+        //    // Create a new button and set the text value to the localized string from AppResources.
+        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
+        //    appBarButton.Text = AppResources.AppBarButtonText;
+        //    ApplicationBar.Buttons.Add(appBarButton);
+
+        //    // Create a new menu item with the localized string from AppResources.
+        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
+        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
+        //}
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MyFirstApp.csproj b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/MyFirstApp.csproj
new file mode 100644 (file)
index 0000000..832c445
--- /dev/null
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MyFirstApp</RootNamespace>
+    <AssemblyName>MyFirstApp</AssemblyName>
+    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
+    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <SilverlightApplication>true</SilverlightApplication>
+    <SupportedCultures>
+    </SupportedCultures>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>MyFirstApp_$(Configuration)_$(Platform).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>MyFirstApp.App</SilverlightAppEntry>
+    <ValidateXaml>true</ValidateXaml>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\ARM\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\ARM\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="LocalizedStrings.cs" />
+    <Compile Include="MainPage.xaml.cs">
+      <DependentUpon>MainPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </ApplicationDefinition>
+    <Page Include="MainPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\WMAppManifest.xml">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\AlignmentGrid.png" />
+    <Content Include="Assets\ApplicationIcon.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions />
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AppManifest.xml b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AppManifest.xml
new file mode 100644 (file)
index 0000000..6712a11
--- /dev/null
@@ -0,0 +1,6 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+>
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..507c3ad
--- /dev/null
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MyFirstApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MyFirstApp")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0615693f-c745-4df6-ada2-336d114d4fce")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Properties/WMAppManifest.xml
new file mode 100644 (file)
index 0000000..ee73aef
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+  <DefaultLanguage xmlns="" code="en-US"/>
+  <App xmlns="" ProductID="{f14cb6c1-c8a1-4527-92cc-4f30748bafea}" Title="MyFirstApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="MyFirstApp author" Description="Sample description" Publisher="MyFirstApp" PublisherID="{821ad788-05f7-4b13-9ca9-a4f6e1e00573}">
+    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
+    <Capabilities>
+      <Capability Name="ID_CAP_NETWORKING"/>
+      <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
+      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
+      <Capability Name="ID_CAP_SENSORS"/>
+      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
+    </Capabilities>
+    <Tasks>
+      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
+    </Tasks>
+    <Tokens>
+      <PrimaryToken TokenID="MyFirstAppToken" TaskName="_default">
+        <TemplateFlip>
+          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
+          <Count>0</Count>
+          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
+          <Title>MyFirstApp</Title>
+          <BackContent></BackContent>
+          <BackBackgroundImageURI></BackBackgroundImageURI>
+          <BackTitle></BackTitle>
+          <DeviceLockImageURI></DeviceLockImageURI>
+          <HasLarge></HasLarge>
+        </TemplateFlip>
+      </PrimaryToken>
+    </Tokens>
+    <ScreenResolutions>
+      <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
+      <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
+    </ScreenResolutions>
+  </App>
+</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.Designer.cs
new file mode 100644 (file)
index 0000000..650c1c0
--- /dev/null
@@ -0,0 +1,127 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.17626
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MyFirstApp.Resources
+{
+    using System;
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if (object.ReferenceEquals(resourceMan, null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MyFirstApp.Resources.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to LeftToRight.
+        /// </summary>
+        public static string ResourceFlowDirection
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to us-EN.
+        /// </summary>
+        public static string ResourceLanguage
+        {
+            get
+            {
+                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to MY APPLICATION.
+        /// </summary>
+        public static string ApplicationTitle
+        {
+            get
+            {
+                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to button.
+        /// </summary>
+        public static string AppBarButtonText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to menu item.
+        /// </summary>
+        public static string AppBarMenuItemText
+        {
+            get
+            {
+                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.resx b/WindowsPhone/WP8/MyFirstApp/MyFirstApp/Resources/AppResources.resx
new file mode 100644 (file)
index 0000000..529a194
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>en-US</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>MY APPLICATION</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>add</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Menu Item</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents.sln b/WindowsPhone/WP8/RemoteAgents/RemoteAgents.sln
new file mode 100644 (file)
index 0000000..1d0a861
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30110.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteAgents", "RemoteAgents\RemoteAgents.csproj", "{C11B661C-3470-4542-83A7-939674DB2BD2}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.ActiveCfg = Debug|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.Build.0 = Debug|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|ARM.Deploy.0 = Debug|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.ActiveCfg = Debug|x86
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.Build.0 = Debug|x86
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Debug|x86.Deploy.0 = Debug|x86
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.ActiveCfg = Release|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.Build.0 = Release|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|ARM.Deploy.0 = Release|ARM
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.ActiveCfg = Release|x86
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.Build.0 = Release|x86
+               {C11B661C-3470-4542-83A7-939674DB2BD2}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml
new file mode 100644 (file)
index 0000000..f2681b6
--- /dev/null
@@ -0,0 +1,20 @@
+<Application
+    x:Class="RemoteAgents.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
+
+    <!--Recursos de la aplicación-->
+    <Application.Resources>
+        <local:LocalizedStrings xmlns:local="clr-namespace:RemoteAgents" x:Key="LocalizedStrings"/>
+    </Application.Resources>
+
+    <Application.ApplicationLifetimeObjects>
+        <!--Objeto requerido que controla los eventos de duración de la aplicación-->
+        <shell:PhoneApplicationService
+            Launching="Application_Launching" Closing="Application_Closing"
+            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
+    </Application.ApplicationLifetimeObjects>
+
+</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/App.xaml.cs
new file mode 100644 (file)
index 0000000..5453f1e
--- /dev/null
@@ -0,0 +1,223 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Example.RemoteAgents.WindowsPhone.Resources;
+
+namespace RemoteAgents
+{
+    public partial class App : Application
+    {
+        /// <summary>
+        /// Proporcionar acceso sencillo al marco raíz de la aplicación telefónica.
+        /// </summary>
+        /// <returns>Marco raíz de la aplicación telefónica.</returns>
+        public static PhoneApplicationFrame RootFrame { get; private set; }
+
+        /// <summary>
+        /// Constructor para el objeto Application.
+        /// </summary>
+        public App()
+        {
+            // Controlador global para excepciones no detectadas.
+            UnhandledException += Application_UnhandledException;
+
+            // Inicialización XAML estándar
+            InitializeComponent();
+
+            // Inicialización especifica del teléfono
+            InitializePhoneApplication();
+
+            // Inicialización del idioma
+            InitializeLanguage();
+
+            // Mostrar información de generación de perfiles gráfica durante la depuración.
+            if (Debugger.IsAttached)
+            {
+                // Mostrar los contadores de velocidad de marcos actual.
+                Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+                // Mostrar las áreas de la aplicación que se están volviendo a dibujar en cada marco.
+                //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+                // Habilitar el modo de visualización de análisis de no producción,
+                // que muestra áreas de una página que se entregan a la GPU con una superposición coloreada.
+                //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+                // Impedir que la pantalla se apague mientras se realiza la depuración deshabilitando
+                // la detección de inactividad de la aplicación.
+                // Precaución: solo debe usarse en modo de depuración. Las aplicaciones que deshabiliten la detección de inactividad del usuario seguirán en ejecución
+                // y consumirán energía de la batería cuando el usuario no esté usando el teléfono.
+                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+            }
+
+        }
+
+        // Código para ejecutar cuando la aplicación se inicia (p.ej. a partir de Inicio)
+        // Este código no se ejecutará cuando la aplicación se reactive
+        private void Application_Launching(object sender, LaunchingEventArgs e)
+        {
+        }
+
+        // Código para ejecutar cuando la aplicación se activa (se trae a primer plano)
+        // Este código no se ejecutará cuando la aplicación se inicie por primera vez
+        private void Application_Activated(object sender, ActivatedEventArgs e)
+        {
+        }
+
+        // Código para ejecutar cuando la aplicación se desactiva (se envía a segundo plano)
+        // Este código no se ejecutará cuando la aplicación se cierre
+        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+        {
+        }
+
+        // Código para ejecutar cuando la aplicación se cierra (p.ej., al hacer clic en Atrás)
+        // Este código no se ejecutará cuando la aplicación se desactive
+        private void Application_Closing(object sender, ClosingEventArgs e)
+        {
+        }
+
+        // Código para ejecutar si hay un error de navegación
+        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // Ha habido un error de navegación; interrumpir el depurador
+                Debugger.Break();
+            }
+        }
+
+        // Código para ejecutar en excepciones no controladas
+        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // Se ha producido una excepción no controlada; interrumpir el depurador
+                Debugger.Break();
+            }
+        }
+
+        #region Inicialización de la aplicación telefónica
+
+        // Evitar inicialización doble
+        private bool phoneApplicationInitialized = false;
+
+        // No agregar ningún código adicional a este método
+        private void InitializePhoneApplication()
+        {
+            if (phoneApplicationInitialized)
+                return;
+
+            // Crear el marco pero no establecerlo como RootVisual todavía; esto permite que
+            // la pantalla de presentación permanezca activa hasta que la aplicación esté lista para la presentación.
+            RootFrame = new PhoneApplicationFrame();
+            RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+            // Controlar errores de navegación
+            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+            // Controlar solicitudes de restablecimiento para borrar la pila de retroceso
+            RootFrame.Navigated += CheckForResetNavigation;
+
+            // Asegurarse de que no volvemos a inicializar
+            phoneApplicationInitialized = true;
+        }
+
+        // No agregar ningún código adicional a este método
+        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+        {
+            // Establecer el objeto visual raíz para permitir que la aplicación se presente
+            if (RootVisual != RootFrame)
+                RootVisual = RootFrame;
+
+            // Quitar este controlador porque ya no es necesario
+            RootFrame.Navigated -= CompleteInitializePhoneApplication;
+        }
+
+        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+        {
+            // Si la aplicación ha recibido una navegación 'reset', tenemos que comprobarlo
+            // en la siguiente navegación para ver si se debe restablecer la pila de páginas
+            if (e.NavigationMode == NavigationMode.Reset)
+                RootFrame.Navigated += ClearBackStackAfterReset;
+        }
+
+        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+        {
+            // Anular registro del evento para que no se vuelva a llamar
+            RootFrame.Navigated -= ClearBackStackAfterReset;
+
+            // Borrar solo la pila de navegaciones 'new' (hacia delante) y 'refresh'
+            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+                return;
+
+            // Por coherencia de la IU, borrar toda la pila de páginas
+            while (RootFrame.RemoveBackEntry() != null)
+            {
+                ; // no hacer nada
+            }
+        }
+
+        #endregion
+
+        // Inicializar la fuente y la dirección de flujo de la aplicación según se define en sus cadenas de recursos traducidas.
+        //
+        // Para asegurarse de que la fuente de la aplicación está alineada con sus idiomas admitidos y que
+        // FlowDirection para todos esos idiomas sigue su dirección tradicional, ResourceLanguage
+        // y ResourceFlowDirection se debe inicializar en cada archivo resx para que estos valores coincidan con ese
+        // referencia cultural del archivo. Por ejemplo:
+        //
+        // AppResources.es-ES.resx
+        //    El valor de ResourceLanguage debe ser "es-ES"
+        //    El valor de ResourceFlowDirection debe ser "LeftToRight"
+        //
+        // AppResources.ar-SA.resx
+        //     El valor de ResourceLanguage debe ser "ar-SA"
+        //     El valor de ResourceFlowDirection debe ser "RightToLeft"
+        //
+        // Para obtener más información sobre cómo traducir aplicaciones para Windows Phone, consulte http://go.microsoft.com/fwlink/?LinkId=262072.
+        //
+        private void InitializeLanguage()
+        {
+            try
+            {
+                // Establecer la fuente para que coincida con el idioma definido por
+                // Cadena de recursos ResourceLanguage para cada idioma admitido.
+                //
+                // Recurrir a la fuente del idioma neutro si el idioma
+                // del teléfono no se admite.
+                //
+                // Si se produce un error del compilador, falta ResourceLanguage
+                // el archivo de recursos.
+                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+                // Establecer FlowDirection de todos los elementos del marco raíz según
+                // en la cadena de recursos ResourceFlowDirection para cada
+                // idioma admitido.
+                //
+                // Si se produce un error del compilador, falta ResourceFlowDirection
+                // el archivo de recursos.
+                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+                RootFrame.FlowDirection = flow;
+            }
+            catch
+            {
+                // Si se detecta aquí una excepción, lo más probable es que se deba a
+                // ResourceLanguage no se ha establecido correctamente en un idioma admitido
+                // o ResourceFlowDirection se ha establecido en un valor distinto de LeftToRight
+                // o RightToLeft.
+
+                if (Debugger.IsAttached)
+                {
+                    Debugger.Break();
+                }
+
+                throw;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png
new file mode 100644 (file)
index 0000000..f7d2e97
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/AlignmentGrid.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png
new file mode 100644 (file)
index 0000000..7d95d4e
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/ApplicationIcon.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644 (file)
index 0000000..e0c59ac
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644 (file)
index 0000000..e93b89d
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644 (file)
index 0000000..550b1b5
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644 (file)
index 0000000..686e6b5
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png
new file mode 100644 (file)
index 0000000..d4b5ede
Binary files /dev/null and b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Assets/Tiles/IconicTileSmall.png differ
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/LocalizedStrings.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/LocalizedStrings.cs
new file mode 100644 (file)
index 0000000..e9c2ec8
--- /dev/null
@@ -0,0 +1,14 @@
+using Example.RemoteAgents.WindowsPhone.Resources;
+
+namespace RemoteAgents
+{
+    /// <summary>
+    /// Proporciona acceso a los recursos de cadena.
+    /// </summary>
+    public class LocalizedStrings
+    {
+        private static AppResources _localizedResources = new AppResources();
+
+        public AppResources LocalizedResources { get { return _localizedResources; } }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml
new file mode 100644 (file)
index 0000000..57f0f33
--- /dev/null
@@ -0,0 +1,77 @@
+<phone:PhoneApplicationPage
+    x:Class="RemoteAgents.MainPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="Portrait" Orientation="Portrait"
+    shell:SystemTray.IsVisible="True">
+
+    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
+    <Grid x:Name="LayoutRoot" Background="Transparent">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- NOTA PARA LA TRADUCCIÓN:
+            Para traducir las cadenas mostradas, copia sus valores a las claves con el nombre
+            correspondiente en el archivo de recursos del idioma neutro (AppResources.resx) de la aplicación y
+            reemplaza el valor de texto codificado de forma rígida entre las comillas de los atributos
+            con la cláusula de enlace cuya ruta de acceso apunte a ese nombre de cadena.
+
+            Por ejemplo:
+
+                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
+
+            Este enlace apunta al recurso de cadena de la plantilla denominado "ApplicationTitle".
+
+            Al agregar idiomas admitidos en la pestaña Propiedades del proyecto se creará un
+            nuevo archivo resx por idioma que puede contener los valores traducidos de las
+            cadenas de la interfaz de usuario. El enlace de estos ejemplos hará que el valor de los atributos
+            se tome del archivo .resx correspondiente al valor de
+            CurrentUICulture de la aplicación en tiempo de ejecución.
+         -->
+
+        <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
+        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
+            <TextBlock Text="{Binding LocalizedResources.ApplicationTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
+            <TextBlock Text="{Binding LocalizedResources.ApplicationName, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+        </StackPanel>
+
+        <!--ContentPanel. Colocar aquí el contenido adicional-->
+        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+            <TextBox x:Name="CurrentDateTextBox" HorizontalAlignment="Left" Height="72" Margin="0,57,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="456" IsReadOnly="True" InputScope="Date"/>
+            <Button x:Name="ButtonRetrieveRemoteData" Content="{Binding LocalizedResources.ButtonRetrieveRemoteData, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Margin="289,479,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.915,0.432"/>
+            <Button x:Name="ButtonSendRemoteData" Content="{Binding LocalizedResources.ButtonSendRemoteData, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Margin="29,479,0,0" VerticalAlignment="Top"/>
+            <TextBox x:Name="TextBoxSendText" HorizontalAlignment="Left" Height="182" Margin="10,236,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="251"/>
+            <TextBlock HorizontalAlignment="Left" Margin="29,192,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="29" Width="121" Text="{Binding LocalizedResources.TextBlockSendText, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
+               <Run Text="Send Text"/>
+               <Run Text=":"/>
+               <LineBreak/>
+               <Run/>
+            </TextBlock>
+            <TextBlock HorizontalAlignment="Left" Margin="29,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="29" Width="121" Text="{Binding LocalizedResources.TextBlockRemoteDate, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
+               <Run Text="Remote Date:"/>
+               <LineBreak/>
+               <Run/>
+            </TextBlock>
+
+        </Grid>
+
+        <!--Quitar la marca de comentarios para ver una cuadrícula de alineación que
+            ayuda a comprobar que los controles están alineados en los límites normales.  La imagen tiene un margen superior de -32px para
+            tener en cuenta la bandeja del sistema. Establécelo en 0 (o quite el margen)
+            si la bandeja del sistema está oculta.
+
+            Antes de enviarla, quita este código XAML y la propia imagen.-->
+        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/MainPage.xaml.cs
new file mode 100644 (file)
index 0000000..bb16625
--- /dev/null
@@ -0,0 +1,88 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Example.RemoteAgents.WindowsPhone.Resources;
+using RemoteAgents.WindowsPhone.View;
+using NLog;
+
+namespace RemoteAgents
+{
+    public partial class MainPage : PhoneApplicationPage
+    {
+        private readonly ViewImpl _view;
+
+        /// <summary>
+        /// The logger.
+        /// </summary>
+        private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
+
+        // Constructor
+        public MainPage()
+        {
+            _view = new ViewImpl();
+
+            InitializeComponent();
+
+            this.registerEvents();
+            // Código de ejemplo para traducir ApplicationBar
+            //BuildLocalizedApplicationBar();
+        }
+
+        async private void ButtonRetrieveRemoteData_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                // Returning data in the same context (the UI thread) because we want to update the UI.
+                this.CurrentDateTextBox.Text = await _view.GetCurrentDateAsync();
+            }
+            catch (Exception exception)
+            {
+                // TODO: Should I catch exceptions in the UI thread? I guess it is right but not sure...
+                _logger.ErrorException("ButtonGetDateClicked error: ", exception);
+            }
+        }
+
+        async private void SendDataButtonClicked(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                int number = 666;
+                await _view.SetWriteTextAsync(this.TextBoxSendText.Text,
+                                              number);
+            }
+            catch (Exception exception)
+            {
+                // TODO: Should I catch exceptions in the UI thread? I guess it is right but not sure...
+                _logger.ErrorException("SendDataButtonClicked error: ", exception);
+            }
+        }
+
+        private void registerEvents ()
+        {
+            this.ButtonRetrieveRemoteData.Click += ButtonRetrieveRemoteData_Click;
+            this.ButtonSendRemoteData.Click += SendDataButtonClicked;
+        }
+
+        // Código de ejemplo para compilar una ApplicationBar traducida
+        //private void BuildLocalizedApplicationBar()
+        //{
+        //    // Establecer ApplicationBar de la página en una nueva instancia de ApplicationBar.
+        //    ApplicationBar = new ApplicationBar();
+
+        //    // Crear un nuevo botón y establecer el valor de texto en la cadena traducida de AppResources.
+        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
+        //    appBarButton.Text = AppResources.AppBarButtonText;
+        //    ApplicationBar.Buttons.Add(appBarButton);
+
+        //    // Crear un nuevo elemento de menú con la cadena traducida de AppResources.
+        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
+        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
+        //}
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.config b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.config
new file mode 100644 (file)
index 0000000..ba49fd2
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+  <!-- 
+  See http://nlog-project.org/wiki/Configuration_file 
+  for information on customizing logging rules and outputs.
+   -->
+  <targets async="true">
+    <!-- add your targets here
+
+    <target name="asyncFile" xsi:type="AsyncWrapper">
+      <target xsi:type="File" name="logfile" fileName="${shortdate}.log"
+            layout="${longdate} ${uppercase:${level}} ${callsite} ${message} ${newline}" />
+    </target>
+
+    -->
+    <target xsi:type="LogReceiverService"
+      name="remoteLog"
+      endpointAddress="http://gumartinm.name/Design_Time_Addresses/MyLogReceiverApp/LogReceiverServer/"
+      useBinaryEncoding="false"
+      clientId="remoteagents_wp8"
+      includeEventProperties="true">
+      <parameter layout="${longdate} ${uppercase:${level}} ${callsite} ${message} ${newline}" />
+    </target>
+
+  </targets>
+
+  <rules>
+    <!-- add your logging rules here -->
+    
+    <!--
+    <logger name="*" minlevel="Info" writeTo="asyncFile" />
+    -->
+    <logger name="*" minlevel="Info" writeTo="remoteLog" />
+
+  </rules>
+</nlog>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.xsd b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/NLog.xsd
new file mode 100644 (file)
index 0000000..49dd620
--- /dev/null
@@ -0,0 +1,2638 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema id="NLog" targetNamespace="http://www.nlog-project.org/schemas/NLog.xsd" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.nlog-project.org/schemas/NLog.xsd">
+  <xs:element name="nlog" type="NLogConfiguration" />
+  <xs:complexType name="NLogConfiguration">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="extensions" type="NLogExtensions" />
+      <xs:element name="include" type="NLogInclude" />
+      <xs:element name="variable" type="NLogVariable" />
+      <xs:element name="targets" type="NLogTargets" />
+      <xs:element name="rules" type="NLogRules" />
+    </xs:choice>
+    <xs:attribute name="autoReload" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Watch config file for changes and reload automatically.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="internalLogToConsole" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Print internal NLog messages to the console. Default value is: false</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="internalLogToConsoleError" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Print internal NLog messages to the console error output. Default value is: false</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="internalLogFile" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Write internal NLog messages to the specified file.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="internalLogLevel" type="NLogLevel">
+      <xs:annotation>
+        <xs:documentation>Log level threshold for internal log messages. Default value is: Info.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="globalThreshold" type="NLogLevel">
+      <xs:annotation>
+        <xs:documentation>Global log level threshold for application log messages. Messages below this level won't be logged..</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="throwExceptions" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Pass NLog internal exceptions to the application. Default value is: false.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLogTargets">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="default-wrapper" type="WrapperTargetBase" />
+      <xs:element name="default-target-parameters" type="Target" />
+      <xs:element name="target" type="Target" />
+      <xs:element name="wrapper-target" type="WrapperTargetBase" />
+      <xs:element name="compound-target" type="CompoundTargetBase" />
+    </xs:choice>
+    <xs:attribute name="async" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLogRules">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="logger" type="NLogLoggerRule" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="NLogExtensions">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="add" type="NLogExtensionsAdd" />
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="NLogExtensionsAdd">
+    <xs:attribute name="prefix" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Prefix for targets/layout renderers/filters/conditions loaded from this assembly.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="assemblyFile" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Load NLog extensions from the specified file (*.dll)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="assembly" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Load NLog extensions from the specified assembly. Assembly name should be fully qualified.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLogLoggerRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="filters" type="NLogFilters" />
+    </xs:choice>
+    <xs:attribute name="name" use="optional">
+      <xs:annotation>
+        <xs:documentation>Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="levels" type="NLogLevelList">
+      <xs:annotation>
+        <xs:documentation>Comma separated list of levels that this rule matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="minlevel" type="NLogLevel">
+      <xs:annotation>
+        <xs:documentation>Minimum level that this rule matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="maxlevel" type="NLogLevel">
+      <xs:annotation>
+        <xs:documentation>Maximum level that this rule matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="level" type="NLogLevel">
+      <xs:annotation>
+        <xs:documentation>Level that this rule matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="writeTo" type="NLogTargetIDList">
+      <xs:annotation>
+        <xs:documentation>Comma separated list of target names.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="final" type="xs:boolean" default="false">
+      <xs:annotation>
+        <xs:documentation>Ignore further rules if this one matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLogFilters">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="when" type="when" />
+      <xs:element name="whenContains" type="whenContains" />
+      <xs:element name="whenEqual" type="whenEqual" />
+      <xs:element name="whenNotContains" type="whenNotContains" />
+      <xs:element name="whenNotEqual" type="whenNotEqual" />
+    </xs:choice>
+  </xs:complexType>
+  <xs:simpleType name="NLogLevel">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Off" />
+      <xs:enumeration value="Trace" />
+      <xs:enumeration value="Debug" />
+      <xs:enumeration value="Info" />
+      <xs:enumeration value="Warn" />
+      <xs:enumeration value="Error" />
+      <xs:enumeration value="Fatal" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLogLevelList">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="(|Trace|Debug|Info|Warn|Error|Fatal)(,(Trace|Debug|Info|Warn|Error|Fatal))*" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLogInclude">
+    <xs:attribute name="file" type="SimpleLayoutAttribute" use="required">
+      <xs:annotation>
+        <xs:documentation>Name of the file to be included. The name is relative to the name of the current config file.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ignoreErrors" type="xs:boolean" use="optional" default="false">
+      <xs:annotation>
+        <xs:documentation>Ignore any errors in the include file.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLogVariable">
+    <xs:attribute name="name" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation>Variable name.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="value" type="SimpleLayoutAttribute" use="required">
+      <xs:annotation>
+        <xs:documentation>Variable value.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:simpleType name="NLogTargetIDList">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="(|([a-zA-Z][a-zA-Z0-9_\-]*))(,([a-zA-Z][a-zA-Z0-9_\-]*))*" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="Target" abstract="true"></xs:complexType>
+  <xs:complexType name="TargetRef">
+    <xs:attribute name="name" type="xs:string" use="required" />
+  </xs:complexType>
+  <xs:complexType name="WrapperTargetBase" abstract="true">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="target" type="Target" minOccurs="1" maxOccurs="1" />
+          <xs:element name="wrapper-target" type="WrapperTargetBase" minOccurs="1" maxOccurs="1" />
+          <xs:element name="compound-target" type="CompoundTargetBase" minOccurs="1" maxOccurs="1" />
+          <xs:element name="target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+          <xs:element name="wrapper-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+          <xs:element name="compound-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="CompoundTargetBase" abstract="true">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="target" type="Target" minOccurs="1" maxOccurs="unbounded" />
+          <xs:element name="wrapper-target" type="WrapperTargetBase" minOccurs="1" maxOccurs="1" />
+          <xs:element name="compound-target" type="CompoundTargetBase" minOccurs="1" maxOccurs="1" />
+          <xs:element name="target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+          <xs:element name="wrapper-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+          <xs:element name="compound-target-ref" type="TargetRef" minOccurs="1" maxOccurs="1" />
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Layout"></xs:complexType>
+  <xs:complexType name="Filter" abstract="true"></xs:complexType>
+  <xs:simpleType name="SimpleLayoutAttribute">
+    <xs:restriction base="xs:string">
+      <xs:pattern value=".*" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="Condition">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="1" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="AspNetBufferingWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="growBufferAsNeeded" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="bufferGrowLimit" minOccurs="0" maxOccurs="1" type="xs:integer" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="growBufferAsNeeded" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether buffer should grow as needed.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="bufferSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of log events to be buffered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="bufferGrowLimit" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum number of log events that the buffer can keep.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="AspNetTrace">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="AspResponse">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="addComments" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="addComments" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to add &lt;!-- --&gt; comments around all written texts.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="AsyncWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="queueLimit" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="timeToSleepBetweenBatches" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="batchSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="overflowAction" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="queueLimit" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Limit on the number of requests in the lazy writer thread request queue.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="timeToSleepBetweenBatches" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Time in milliseconds to sleep between batches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="batchSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of log events that should be processed in a batch by the lazy writer thread.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="overflowAction" type="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when the lazy writer thread request queue count exceeds the set limit.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Grow" />
+      <xs:enumeration value="Discard" />
+      <xs:enumeration value="Block" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="AutoFlushWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="BufferingWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="slidingTimeout" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="flushTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="slidingTimeout" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use sliding timeout.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="flushTimeout" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="bufferSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of log events to be buffered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Chainsaw">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
+          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
+          <xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="newLine" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
+          <xs:annotation>
+            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxMessageSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum message size in bytes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding to be used.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="address" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Network address.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="connectionCacheSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="keepConnection" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxQueueSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum queue size.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeMdc" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeCallSite" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="appInfo" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeNLogData" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeNdc" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ndcItemSeparator" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>NDC item separator.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeSourceInfo" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.NetworkTargetOverflowAction">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Error" />
+      <xs:enumeration value="Split" />
+      <xs:enumeration value="Discard" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLog.Targets.NLogViewerParameterInfo">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+    </xs:choice>
+    <xs:attribute name="layout" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="name" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Viewer parameter name.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="ColoredConsole">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="highlight-row" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.ConsoleRowHighlightingRule" />
+          <xs:element name="highlight-word" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.ConsoleWordHighlightingRule" />
+          <xs:element name="useDefaultRowHighlightingRules" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="errorStream" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text to be rendered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useDefaultRowHighlightingRules" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use default row highlighting rules.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="errorStream" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.ConsoleOutputColor">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Black" />
+      <xs:enumeration value="DarkBlue" />
+      <xs:enumeration value="DarkGreen" />
+      <xs:enumeration value="DarkCyan" />
+      <xs:enumeration value="DarkRed" />
+      <xs:enumeration value="DarkMagenta" />
+      <xs:enumeration value="DarkYellow" />
+      <xs:enumeration value="Gray" />
+      <xs:enumeration value="DarkGray" />
+      <xs:enumeration value="Blue" />
+      <xs:enumeration value="Green" />
+      <xs:enumeration value="Cyan" />
+      <xs:enumeration value="Red" />
+      <xs:enumeration value="Magenta" />
+      <xs:enumeration value="Yellow" />
+      <xs:enumeration value="White" />
+      <xs:enumeration value="NoChange" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLog.Targets.ConsoleRowHighlightingRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
+      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
+      <xs:element name="foregroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
+    </xs:choice>
+    <xs:attribute name="condition" type="Condition">
+      <xs:annotation>
+        <xs:documentation>Condition that must be met in order to set the specified foreground and background color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="backgroundColor" type="NLog.Targets.ConsoleOutputColor">
+      <xs:annotation>
+        <xs:documentation>Background color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="foregroundColor" type="NLog.Targets.ConsoleOutputColor">
+      <xs:annotation>
+        <xs:documentation>Foreground color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLog.Targets.ConsoleWordHighlightingRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+      <xs:element name="regex" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="wholeWords" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
+      <xs:element name="foregroundColor" minOccurs="0" maxOccurs="1" type="NLog.Targets.ConsoleOutputColor" />
+    </xs:choice>
+    <xs:attribute name="ignoreCase" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="regex" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="text" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="wholeWords" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="backgroundColor" type="NLog.Targets.ConsoleOutputColor">
+      <xs:annotation>
+        <xs:documentation>Background color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="foregroundColor" type="NLog.Targets.ConsoleOutputColor">
+      <xs:annotation>
+        <xs:documentation>Foreground color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Console">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="error" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text to be rendered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="error" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to send the log messages to the standard error instead of the standard output.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Database">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="dbUserName" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="dbProvider" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="useTransactions" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="dbPassword" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="connectionStringName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="connectionString" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="dbHost" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="dbDatabase" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="uninstall-command" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseCommandInfo" />
+          <xs:element name="install-command" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseCommandInfo" />
+          <xs:element name="installConnectionString" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseParameterInfo" />
+          <xs:element name="commandText" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dbUserName" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dbProvider" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the database provider.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useTransactions" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use database transactions. Some data providers require this.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="keepConnection" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to keep the database connection open between the log events.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dbPassword" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="connectionStringName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the connection string (as specified in &lt;connectionStrings&gt; configuration section.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="connectionString" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dbHost" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dbDatabase" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="installConnectionString" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="commandText" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text of the SQL command to be run on each log level.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="System.Data.CommandType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Text" />
+      <xs:enumeration value="StoredProcedure" />
+      <xs:enumeration value="TableDirect" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLog.Targets.DatabaseCommandInfo">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="commandType" minOccurs="0" maxOccurs="1" type="System.Data.CommandType" />
+      <xs:element name="connectionString" minOccurs="0" maxOccurs="1" type="Layout" />
+      <xs:element name="ignoreFailures" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+      <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.DatabaseParameterInfo" />
+      <xs:element name="text" minOccurs="0" maxOccurs="1" type="Layout" />
+    </xs:choice>
+    <xs:attribute name="commandType" type="System.Data.CommandType">
+      <xs:annotation>
+        <xs:documentation>Type of the command.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="connectionString" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Connection string to run the command against. If not provided, connection string from the target is used.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ignoreFailures" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Indicates whether to ignore failures.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="text" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Command text.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLog.Targets.DatabaseParameterInfo">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="precision" minOccurs="0" maxOccurs="1" type="xs:byte" />
+      <xs:element name="scale" minOccurs="0" maxOccurs="1" type="xs:byte" />
+      <xs:element name="size" minOccurs="0" maxOccurs="1" type="xs:integer" />
+    </xs:choice>
+    <xs:attribute name="layout" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="name" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Database parameter name.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="precision" type="xs:byte">
+      <xs:annotation>
+        <xs:documentation>Database parameter precision.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="scale" type="xs:byte">
+      <xs:annotation>
+        <xs:documentation>Database parameter scale.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="size" type="xs:integer">
+      <xs:annotation>
+        <xs:documentation>Database parameter size.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Debugger">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text to be rendered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Debug">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="EventLog">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="machineName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="source" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="log" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="category" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="eventId" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="machineName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the machine on which Event Log service is running.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="source" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Value to be used as the event Source.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="log" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the Event Log to write to. This can be System, Application or any user-defined name.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="category" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout that renders event Category.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="eventId" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout that renders event ID.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="FallbackGroup">
+    <xs:complexContent>
+      <xs:extension base="CompoundTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="returnToFirstOnSuccess" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="returnToFirstOnSuccess" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to return to the first target after any successful write.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="File">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="lineEnding" minOccurs="0" maxOccurs="1" type="NLog.Targets.LineEndingMode" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="archiveEvery" minOccurs="0" maxOccurs="1" type="NLog.Targets.FileArchivePeriod" />
+          <xs:element name="archiveAboveSize" minOccurs="0" maxOccurs="1" type="xs:long" />
+          <xs:element name="archiveFileName" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="maxArchiveFiles" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="archiveNumbering" minOccurs="0" maxOccurs="1" type="NLog.Targets.ArchiveNumberingMode" />
+          <xs:element name="forceManaged" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="fileAttributes" minOccurs="0" maxOccurs="1" type="NLog.Targets.Win32FileAttributes" />
+          <xs:element name="deleteOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="enableFileDelete" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="createDirs" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="replaceFileContentsOnEachWrite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="fileName" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="openFileCacheTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="concurrentWriteAttemptDelay" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="autoFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="concurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="openFileCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="networkWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="keepFileOpen" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>File encoding.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="lineEnding" type="NLog.Targets.LineEndingMode">
+          <xs:annotation>
+            <xs:documentation>Line ending mode.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text to be rendered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="archiveEvery" type="NLog.Targets.FileArchivePeriod">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to automatically archive log files every time the specified time passes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="archiveAboveSize" type="xs:long">
+          <xs:annotation>
+            <xs:documentation>Size in bytes above which log files will be automatically archived.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="archiveFileName" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Name of the file to be used for an archive.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxArchiveFiles" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="archiveNumbering" type="NLog.Targets.ArchiveNumberingMode">
+          <xs:annotation>
+            <xs:documentation>Way file archives are numbered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="forceManaged" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Gets ors set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="fileAttributes" type="NLog.Targets.Win32FileAttributes">
+          <xs:annotation>
+            <xs:documentation>File attributes (Windows only).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="deleteOldFileOnStartup" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to delete old log file on startup.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="enableFileDelete" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="createDirs" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to create directories if they don't exist.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="replaceFileContentsOnEachWrite" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="fileName" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Name of the file to write to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="openFileCacheTimeout" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="bufferSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Log file buffer size in bytes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="concurrentWriteAttempts" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="concurrentWriteAttemptDelay" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="autoFlush" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="concurrentWrites" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="openFileCacheSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="networkWrites" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="keepFileOpen" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.LineEndingMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Default" />
+      <xs:enumeration value="CRLF" />
+      <xs:enumeration value="CR" />
+      <xs:enumeration value="LF" />
+      <xs:enumeration value="None" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Targets.FileArchivePeriod">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="None" />
+      <xs:enumeration value="Year" />
+      <xs:enumeration value="Month" />
+      <xs:enumeration value="Day" />
+      <xs:enumeration value="Hour" />
+      <xs:enumeration value="Minute" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Targets.ArchiveNumberingMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Sequence" />
+      <xs:enumeration value="Rolling" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Targets.Win32FileAttributes">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="ReadOnly" />
+      <xs:enumeration value="Hidden" />
+      <xs:enumeration value="System" />
+      <xs:enumeration value="Archive" />
+      <xs:enumeration value="Device" />
+      <xs:enumeration value="Normal" />
+      <xs:enumeration value="Temporary" />
+      <xs:enumeration value="SparseFile" />
+      <xs:enumeration value="ReparsePoint" />
+      <xs:enumeration value="Compressed" />
+      <xs:enumeration value="NotContentIndexed" />
+      <xs:enumeration value="Encrypted" />
+      <xs:enumeration value="WriteThrough" />
+      <xs:enumeration value="NoBuffering" />
+      <xs:enumeration value="DeleteOnClose" />
+      <xs:enumeration value="PosixSemantics" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="FilteringWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="condition" type="Condition">
+          <xs:annotation>
+            <xs:documentation>Condition expression. Log events who meet this condition will be forwarded to the wrapped target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="FormControl">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="formName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="controlName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="append" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="reverseOrder" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="formName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the Form on which the control is located.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="controlName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of control to which NLog will log write log text.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="append" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether log text should be appended to the text of the control instead of overwriting it.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="reverseOrder" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Whether new log entry are added to the start or the end of the control</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="ImpersonatingWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="password" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="revertToSelf" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="userName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="logOnType" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.SecurityLogOnType" />
+          <xs:element name="domain" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="impersonationLevel" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.SecurityImpersonationLevel" />
+          <xs:element name="logOnProvider" minOccurs="0" maxOccurs="1" type="NLog.Targets.Wrappers.LogOnProviderType" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="password" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>User account password.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="revertToSelf" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to revert to the credentials of the process instead of impersonating another user.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="userName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Username to change context to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="logOnType" type="NLog.Targets.Wrappers.SecurityLogOnType">
+          <xs:annotation>
+            <xs:documentation>Logon Type.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="domain" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Windows domain name to change context to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="impersonationLevel" type="NLog.Targets.Wrappers.SecurityImpersonationLevel">
+          <xs:annotation>
+            <xs:documentation>Required impersonation level.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="logOnProvider" type="NLog.Targets.Wrappers.LogOnProviderType">
+          <xs:annotation>
+            <xs:documentation>Type of the logon provider.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.Wrappers.SecurityLogOnType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Interactive" />
+      <xs:enumeration value="Network" />
+      <xs:enumeration value="Batch" />
+      <xs:enumeration value="Service" />
+      <xs:enumeration value="NetworkClearText" />
+      <xs:enumeration value="NewCredentials" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Targets.Wrappers.SecurityImpersonationLevel">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Anonymous" />
+      <xs:enumeration value="Identification" />
+      <xs:enumeration value="Impersonation" />
+      <xs:enumeration value="Delegation" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Targets.Wrappers.LogOnProviderType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Default" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="LogReceiverService">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="endpointConfigurationName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="endpointAddress" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="useBinaryEncoding" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
+          <xs:element name="clientId" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="includeEventProperties" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="endpointConfigurationName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the endpoint configuration in WCF configuration file.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="endpointAddress" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Endpoint address.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useBinaryEncoding" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use binary message encoding.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientId" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Client ID.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeEventProperties" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include per-event properties in the payload sent to the server.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="NLog.Targets.MethodCallParameter">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="type" minOccurs="0" maxOccurs="1" type="xs:string" />
+    </xs:choice>
+    <xs:attribute name="layout" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="name" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Name of the parameter.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="type" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Type of the parameter.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Mail">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="html" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="addNewLines" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="to" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="cc" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="bcc" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="subject" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="body" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="from" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="replaceNewlineWithBrTagInHtml" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="priority" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="useSystemNetMailSettings" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="smtpServer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="smtpUserName" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="smtpPort" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="smtpAuthentication" minOccurs="0" maxOccurs="1" type="NLog.Targets.SmtpAuthenticationMode" />
+          <xs:element name="smtpPassword" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="enableSsl" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="html" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to send message as HTML instead of plain text.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding to be used for sending e-mail.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="addNewLines" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to add new lines between log entries.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Text to be rendered.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="to" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="cc" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="bcc" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="subject" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Mail subject.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="body" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Mail message body (repeated for each log message send in one mail).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="from" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Sender's email address (e.g. joe@domain.com).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="replaceNewlineWithBrTagInHtml" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether NewLine characters in the body should be replaced with  tags.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="priority" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Priority used for sending mails.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useSystemNetMailSettings" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether the default Settings from System.Net.MailSettings should be used.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="smtpServer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>SMTP Server to be used for sending.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="smtpUserName" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="smtpPort" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Port number that SMTP Server is listening on.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="smtpAuthentication" type="NLog.Targets.SmtpAuthenticationMode">
+          <xs:annotation>
+            <xs:documentation>SMTP Authentication mode.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="smtpPassword" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="enableSsl" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.SmtpAuthenticationMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="None" />
+      <xs:enumeration value="Basic" />
+      <xs:enumeration value="Ntlm" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="Memory">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="MessageBox">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="caption" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="caption" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Message box title.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="MSMQ">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="useXmlEncoding" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="checkIfQueueExists" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="queue" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="recoverable" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="createQueueIfNotExists" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="label" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useXmlEncoding" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use the XML format when serializing message. This will also disable creating queues.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="checkIfQueueExists" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to check if a queue exists before writing to it.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding to be used when writing text to the queue.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="queue" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Name of the queue to write to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="recoverable" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use recoverable messages (with guaranteed delivery).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="createQueueIfNotExists" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to create the queue if it doesn't exists.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="label" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Label to associate with each message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="MethodCall">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="methodName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="className" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="methodName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Method name. The method must be public and static.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="className" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Class name.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Network">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
+          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="newLine" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
+          <xs:annotation>
+            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxMessageSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum message size in bytes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding to be used.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="keepConnection" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="connectionCacheSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="address" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Network address.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxQueueSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum queue size.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="NLogViewer">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetOverflowAction" />
+          <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="connectionCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="keepConnection" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
+          <xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="newLine" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="onOverflow" type="NLog.Targets.NetworkTargetOverflowAction">
+          <xs:annotation>
+            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxMessageSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum message size in bytes.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding to be used.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="address" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Network address.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="connectionCacheSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="keepConnection" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxQueueSize" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum queue size.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeMdc" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeCallSite" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="appInfo" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeNLogData" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeNdc" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ndcItemSeparator" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>NDC item separator.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="includeSourceInfo" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Null">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="formatMessage" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="formatMessage" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to perform layout calculation.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="OutputDebugString">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="PerfCounter">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="counterName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="counterType" minOccurs="0" maxOccurs="1" type="System.Diagnostics.PerformanceCounterType" />
+          <xs:element name="instanceName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="autoCreate" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="categoryName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="counterHelp" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="counterName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the performance counter.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="counterType" type="System.Diagnostics.PerformanceCounterType">
+          <xs:annotation>
+            <xs:documentation>Performance counter type.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="instanceName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Performance counter instance name.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="autoCreate" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether performance counter should be automatically created.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="categoryName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the performance counter category.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="counterHelp" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Counter help text.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="System.Diagnostics.PerformanceCounterType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="NumberOfItems32" />
+      <xs:enumeration value="NumberOfItems64" />
+      <xs:enumeration value="NumberOfItemsHEX32" />
+      <xs:enumeration value="NumberOfItemsHEX64" />
+      <xs:enumeration value="RateOfCountsPerSecond32" />
+      <xs:enumeration value="RateOfCountsPerSecond64" />
+      <xs:enumeration value="CountPerTimeInterval32" />
+      <xs:enumeration value="CountPerTimeInterval64" />
+      <xs:enumeration value="RawFraction" />
+      <xs:enumeration value="RawBase" />
+      <xs:enumeration value="AverageTimer32" />
+      <xs:enumeration value="AverageBase" />
+      <xs:enumeration value="AverageCount64" />
+      <xs:enumeration value="SampleFraction" />
+      <xs:enumeration value="SampleCounter" />
+      <xs:enumeration value="SampleBase" />
+      <xs:enumeration value="CounterTimer" />
+      <xs:enumeration value="CounterTimerInverse" />
+      <xs:enumeration value="Timer100Ns" />
+      <xs:enumeration value="Timer100NsInverse" />
+      <xs:enumeration value="ElapsedTime" />
+      <xs:enumeration value="CounterMultiTimer" />
+      <xs:enumeration value="CounterMultiTimerInverse" />
+      <xs:enumeration value="CounterMultiTimer100Ns" />
+      <xs:enumeration value="CounterMultiTimer100NsInverse" />
+      <xs:enumeration value="CounterMultiBase" />
+      <xs:enumeration value="CounterDelta32" />
+      <xs:enumeration value="CounterDelta64" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="PostFilteringWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="defaultFilter" minOccurs="0" maxOccurs="1" type="Condition" />
+          <xs:element name="when" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.Wrappers.FilteringRule" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="defaultFilter" type="Condition">
+          <xs:annotation>
+            <xs:documentation>Default filter to be applied when no specific rule matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="NLog.Targets.Wrappers.FilteringRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="exists" minOccurs="0" maxOccurs="1" type="Condition" />
+      <xs:element name="filter" minOccurs="0" maxOccurs="1" type="Condition" />
+    </xs:choice>
+    <xs:attribute name="exists" type="Condition">
+      <xs:annotation>
+        <xs:documentation>Condition to be tested.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="filter" type="Condition">
+      <xs:annotation>
+        <xs:documentation>Resulting filter to be applied when the condition matches.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="RandomizeGroup">
+    <xs:complexContent>
+      <xs:extension base="CompoundTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="RepeatingWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="repeatCount" minOccurs="0" maxOccurs="1" type="xs:integer" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="repeatCount" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of times to repeat each log message.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="RetryingWrapper">
+    <xs:complexContent>
+      <xs:extension base="WrapperTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="retryDelayMilliseconds" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="retryCount" minOccurs="0" maxOccurs="1" type="xs:integer" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="retryDelayMilliseconds" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Time to wait between retries in milliseconds.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="retryCount" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Number of retries that should be attempted on the wrapped target in case of a failure.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="RichTextBox">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="showMinimized" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="maxLines" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="width" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="toolWindow" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="controlName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="autoScroll" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="height" minOccurs="0" maxOccurs="1" type="xs:integer" />
+          <xs:element name="formName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="word-coloring" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.RichTextBoxWordColoringRule" />
+          <xs:element name="useDefaultRowColoringRules" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="row-coloring" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.RichTextBoxRowColoringRule" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="showMinimized" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether the created form will be initially minimized.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxLines" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Maximum number of lines the rich text box will store (or 0 to disable this feature).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="width" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Initial width of the form with rich text box.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="toolWindow" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether the created window will be a tool window.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="controlName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of RichTextBox to which Nlog will write.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="autoScroll" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether scroll bar will be moved automatically to show most recent log entries.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="height" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>Initial height of the form with rich text box.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="formName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useDefaultRowColoringRules" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to use default coloring rules.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="System.Drawing.FontStyle">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Regular" />
+      <xs:enumeration value="Bold" />
+      <xs:enumeration value="Italic" />
+      <xs:enumeration value="Underline" />
+      <xs:enumeration value="Strikeout" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLog.Targets.RichTextBoxWordColoringRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+      <xs:element name="regex" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="wholeWords" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="fontColor" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="style" minOccurs="0" maxOccurs="1" type="System.Drawing.FontStyle" />
+    </xs:choice>
+    <xs:attribute name="ignoreCase" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="regex" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="text" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="wholeWords" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="backgroundColor" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="fontColor" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="style" type="System.Drawing.FontStyle">
+      <xs:annotation>
+        <xs:documentation>Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="NLog.Targets.RichTextBoxRowColoringRule">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
+      <xs:element name="backgroundColor" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="fontColor" minOccurs="0" maxOccurs="1" type="xs:string" />
+      <xs:element name="style" minOccurs="0" maxOccurs="1" type="System.Drawing.FontStyle" />
+    </xs:choice>
+    <xs:attribute name="condition" type="Condition">
+      <xs:annotation>
+        <xs:documentation>Condition that must be met in order to set the specified font color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="backgroundColor" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Background color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="fontColor" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Font color.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="style" type="System.Drawing.FontStyle">
+      <xs:annotation>
+        <xs:documentation>Font style of matched text.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="RoundRobinGroup">
+    <xs:complexContent>
+      <xs:extension base="CompoundTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="SplitGroup">
+    <xs:complexContent>
+      <xs:extension base="CompoundTargetBase">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Trace">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout used to format log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="WebService">
+    <xs:complexContent>
+      <xs:extension base="Target">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
+          <xs:element name="url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
+          <xs:element name="namespace" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="protocol" minOccurs="0" maxOccurs="1" type="NLog.Targets.WebServiceProtocol" />
+          <xs:element name="methodName" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Name of the target.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="url" type="xs:anyURI">
+          <xs:annotation>
+            <xs:documentation>Web service URL.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="namespace" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Web service namespace.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="protocol" type="NLog.Targets.WebServiceProtocol">
+          <xs:annotation>
+            <xs:documentation>Protocol to be used when calling web service.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="methodName" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Web service method name.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="encoding" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Encoding.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Targets.WebServiceProtocol">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Soap11" />
+      <xs:enumeration value="Soap12" />
+      <xs:enumeration value="HttpPost" />
+      <xs:enumeration value="HttpGet" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="CsvLayout">
+    <xs:complexContent>
+      <xs:extension base="Layout">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="quoteChar" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="quoting" minOccurs="0" maxOccurs="1" type="NLog.Layouts.CsvQuotingMode" />
+          <xs:element name="withHeader" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="column" minOccurs="0" maxOccurs="unbounded" type="NLog.Layouts.CsvColumn" />
+          <xs:element name="customColumnDelimiter" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="delimiter" minOccurs="0" maxOccurs="1" type="NLog.Layouts.CsvColumnDelimiterMode" />
+        </xs:choice>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header layout.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer layout.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="quoteChar" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Quote Character.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="quoting" type="NLog.Layouts.CsvQuotingMode">
+          <xs:annotation>
+            <xs:documentation>Quoting mode.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="withHeader" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether CVS should include header.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="customColumnDelimiter" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="delimiter" type="NLog.Layouts.CsvColumnDelimiterMode">
+          <xs:annotation>
+            <xs:documentation>Column delimiter.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="NLog.Layouts.CsvQuotingMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="All" />
+      <xs:enumeration value="Nothing" />
+      <xs:enumeration value="Auto" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NLog.Layouts.CsvColumnDelimiterMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Auto" />
+      <xs:enumeration value="Comma" />
+      <xs:enumeration value="Semicolon" />
+      <xs:enumeration value="Tab" />
+      <xs:enumeration value="Pipe" />
+      <xs:enumeration value="Space" />
+      <xs:enumeration value="Custom" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="NLog.Layouts.CsvColumn">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+      <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
+    </xs:choice>
+    <xs:attribute name="layout" type="SimpleLayoutAttribute">
+      <xs:annotation>
+        <xs:documentation>Layout of the column.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="name" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>Name of the column.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="LayoutWithHeaderAndFooter">
+    <xs:complexContent>
+      <xs:extension base="Layout">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="header" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="footer" minOccurs="0" maxOccurs="1" type="Layout" />
+        </xs:choice>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="header" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Header layout.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="footer" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Footer layout.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="Log4JXmlEventLayout">
+    <xs:complexContent>
+      <xs:extension base="Layout">
+        <xs:choice minOccurs="0" maxOccurs="unbounded" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="SimpleLayout">
+    <xs:complexContent>
+      <xs:extension base="Layout">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="text" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="text" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Layout text.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="when">
+    <xs:complexContent>
+      <xs:extension base="Filter">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
+          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
+        </xs:choice>
+        <xs:attribute name="condition" type="Condition">
+          <xs:annotation>
+            <xs:documentation>Condition expression.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="FilterResult">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="FilterResult">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Neutral" />
+      <xs:enumeration value="Log" />
+      <xs:enumeration value="Ignore" />
+      <xs:enumeration value="LogFinal" />
+      <xs:enumeration value="IgnoreFinal" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="whenContains">
+    <xs:complexContent>
+      <xs:extension base="Filter">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="substring" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
+          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="substring" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Substring to be matched.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="FilterResult">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ignoreCase" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="whenEqual">
+    <xs:complexContent>
+      <xs:extension base="Filter">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
+          <xs:element name="compareTo" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="ignoreCase" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="FilterResult">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="compareTo" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>String to compare the layout to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="whenNotContains">
+    <xs:complexContent>
+      <xs:extension base="Filter">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="substring" minOccurs="0" maxOccurs="1" type="xs:string" />
+          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
+          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+        </xs:choice>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="substring" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>Substring to be matched.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="FilterResult">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ignoreCase" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="whenNotEqual">
+    <xs:complexContent>
+      <xs:extension base="Filter">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="ignoreCase" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+          <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
+          <xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
+          <xs:element name="compareTo" minOccurs="0" maxOccurs="1" type="xs:string" />
+        </xs:choice>
+        <xs:attribute name="ignoreCase" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="layout" type="SimpleLayoutAttribute">
+          <xs:annotation>
+            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="FilterResult">
+          <xs:annotation>
+            <xs:documentation>Action to be taken when filter matches.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="compareTo" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>String to compare the layout to.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AppManifest.xml b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AppManifest.xml
new file mode 100644 (file)
index 0000000..3b998eb
--- /dev/null
@@ -0,0 +1,4 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b3eafc0
--- /dev/null
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// La información general de un ensamblado se controla mediante el siguiente 
+// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("RemoteAgents")]
+[assembly: AssemblyDescription("Little program to connect with remote applications through JSON API")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("gumartinm.name")]
+[assembly: AssemblyProduct("RemoteAgents")]
+[assembly: AssemblyCopyright("Gustavo Martin Morcuende ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si ComVisible se establece en False, los componentes COM no verán los 
+// tipos de este ensamblado.  Si necesita obtener acceso a un tipo de este ensamblado desde 
+// COM, establezca el atributo ComVisible en True en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM
+[assembly: Guid("49e577e0-1571-4598-a428-522438fa6a16")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+//      Versión principal
+//      Versión secundaria 
+//      Número de compilación
+//      Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y revisión 
+// mediante el carácter '*', como se muestra a continuación:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("es-ES")]
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Properties/WMAppManifest.xml
new file mode 100644 (file)
index 0000000..acb6a52
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+  <DefaultLanguage xmlns="" code="es-ES" />
+  <Languages xmlns="">
+    <Language code="en-US" />
+  </Languages>
+  <App xmlns="" ProductID="{c11b661c-3470-4542-83a7-939674db2bd2}" Title="RemoteAgents" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="RemoteAgents author" Description="Sample description" Publisher="RemoteAgents" PublisherID="{911c4cb8-4dfc-4145-93c3-f2723d77b481}">
+    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
+    <Capabilities>
+      <Capability Name="ID_CAP_NETWORKING" />
+      <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
+      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
+      <Capability Name="ID_CAP_SENSORS" />
+      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
+    </Capabilities>
+    <Tasks>
+      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
+    </Tasks>
+    <Tokens>
+      <PrimaryToken TokenID="RemoteAgentsToken" TaskName="_default">
+        <TemplateFlip>
+          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
+          <Count>0</Count>
+          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
+          <Title>RemoteAgents</Title>
+          <BackContent></BackContent>
+          <BackBackgroundImageURI></BackBackgroundImageURI>
+          <BackTitle></BackTitle>
+          <DeviceLockImageURI></DeviceLockImageURI>
+          <HasLarge></HasLarge>
+        </TemplateFlip>
+      </PrimaryToken>
+    </Tokens>
+    <ScreenResolutions>
+      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
+      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
+      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
+    </ScreenResolutions>
+  </App>
+</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/RemoteAgents.csproj b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/RemoteAgents.csproj
new file mode 100644 (file)
index 0000000..c81bd3b
--- /dev/null
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C11B661C-3470-4542-83A7-939674DB2BD2}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Example.RemoteAgents.WindowsPhone</RootNamespace>
+    <AssemblyName>RemoteAgents</AssemblyName>
+    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
+    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <SilverlightApplication>true</SilverlightApplication>
+    <SupportedCultures>en-US</SupportedCultures>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>RemoteAgents_$(Configuration)_$(Platform).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>RemoteAgents.App</SilverlightAppEntry>
+    <ValidateXaml>true</ValidateXaml>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\ARM\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\ARM\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="LocalizedStrings.cs" />
+    <Compile Include="MainPage.xaml.cs">
+      <DependentUpon>MainPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="ViewModel\ViewModel.cs" />
+    <Compile Include="View\View.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </ApplicationDefinition>
+    <Page Include="MainPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="NLog.config">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <SubType>Designer</SubType>
+    </Content>
+    <None Include="NLog.xsd">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="packages.config" />
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\WMAppManifest.xml">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\AlignmentGrid.png" />
+    <Content Include="Assets\ApplicationIcon.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\AppResources.en-US.resx" />
+    <EmbeddedResource Include="Resources\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="jsonrpc4net, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\jsonrpc4net\jsonrpc4net\Bin\Debug\jsonrpc4net.dll</HintPath>
+    </Reference>
+    <Reference Include="NLog">
+      <HintPath>..\packages\NLog.2.1.0\lib\sl4-windowsphone71\NLog.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Model\" />
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions />
+  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" />
+  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
+    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
+    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.10\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
+  </Target>
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.Designer.cs
new file mode 100644 (file)
index 0000000..8c2adf9
--- /dev/null
@@ -0,0 +1,153 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Este código fue generado por una herramienta.
+//     Versión de runtime:4.0.30319.34011
+//
+//     Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+//     se vuelve a generar el código.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Example.RemoteAgents.WindowsPhone.Resources {
+    using System;
+    
+    
+    /// <summary>
+    ///   Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
+    /// </summary>
+    // StronglyTypedResourceBuilder generó automáticamente esta clase
+    // a través de una herramienta como ResGen o Visual Studio.
+    // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen
+    // con la opción /str o recompile su proyecto de VS.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources() {
+        }
+        
+        /// <summary>
+        ///   Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Example.RemoteAgents.WindowsPhone.Resources.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las
+        ///   búsquedas de recursos mediante esta clase de recurso fuertemente tipado.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a agregar.
+        /// </summary>
+        public static string AppBarButtonText {
+            get {
+                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Elemento de menú.
+        /// </summary>
+        public static string AppBarMenuItemText {
+            get {
+                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Remote Agent.
+        /// </summary>
+        public static string ApplicationName {
+            get {
+                return ResourceManager.GetString("ApplicationName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Remote Agents.
+        /// </summary>
+        public static string ApplicationTitle {
+            get {
+                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a GetData.
+        /// </summary>
+        public static string ButtonRetrieveRemoteData {
+            get {
+                return ResourceManager.GetString("ButtonRetrieveRemoteData", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a SendData.
+        /// </summary>
+        public static string ButtonSendRemoteData {
+            get {
+                return ResourceManager.GetString("ButtonSendRemoteData", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a LeftToRight.
+        /// </summary>
+        public static string ResourceFlowDirection {
+            get {
+                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a es-ES.
+        /// </summary>
+        public static string ResourceLanguage {
+            get {
+                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a RemoteDate:.
+        /// </summary>
+        public static string TextBlockRemoteDate {
+            get {
+                return ResourceManager.GetString("TextBlockRemoteDate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a SendText:.
+        /// </summary>
+        public static string TextBlockSendText {
+            get {
+                return ResourceManager.GetString("TextBlockSendText", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.en-US.resx
new file mode 100644 (file)
index 0000000..55148b1
--- /dev/null
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>en-US</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>Remote Agents</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>agregar</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Elemento de menú</value>
+  </data>
+  <data name="ApplicationName" xml:space="preserve">
+    <value>Remote Agent</value>
+  </data>
+  <data name="ButtonRetrieveRemoteData" xml:space="preserve">
+    <value>GetData</value>
+  </data>
+  <data name="ButtonSendRemoteData" xml:space="preserve">
+    <value>SendData</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.resx b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/Resources/AppResources.resx
new file mode 100644 (file)
index 0000000..3faabb4
--- /dev/null
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>es-ES</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>Remote Agents</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>agregar</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Elemento de menú</value>
+  </data>
+  <data name="ApplicationName" xml:space="preserve">
+    <value>Remote Agent</value>
+  </data>
+  <data name="ButtonRetrieveRemoteData" xml:space="preserve">
+    <value>GetData</value>
+  </data>
+  <data name="ButtonSendRemoteData" xml:space="preserve">
+    <value>SendData</value>
+  </data>
+  <data name="TextBlockRemoteDate" xml:space="preserve">
+    <value>RemoteDate:</value>
+  </data>
+  <data name="TextBlockSendText" xml:space="preserve">
+    <value>SendText:</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/View/View.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/View/View.cs
new file mode 100644 (file)
index 0000000..dc1bcb7
--- /dev/null
@@ -0,0 +1,22 @@
+using RemoteAgents.WindowsPhone.ViewModel;
+using System.Threading.Tasks;
+
+namespace RemoteAgents.WindowsPhone.View
+{
+    public class ViewImpl
+    {
+        private readonly ViewModelImpl _vm = new ViewModelImpl();
+
+        async public Task<string> GetCurrentDateAsync()
+        {
+            // Returning data in a diferent context. Upper layer decides.
+            return await _vm.GetCurrentDateAsync().ConfigureAwait(false);
+        }
+
+        async public Task SetWriteTextAsync(string text, int number)
+        {
+            // Returning data in a diferent context. Upper layer decides.
+            await _vm.SetWriteTextAsync(text, number).ConfigureAwait(false);
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/ViewModel/ViewModel.cs
new file mode 100644 (file)
index 0000000..788a762
--- /dev/null
@@ -0,0 +1,25 @@
+using GumartinM.JsonRPC4NET;
+using System.Threading.Tasks;
+
+namespace RemoteAgents.WindowsPhone.ViewModel
+{
+    public class ViewModelImpl
+    {
+        private static readonly string uri = "http://gumartinm.name/spring-mainapp/CurrentDateService.json";
+        private static readonly string uriSetWriteText = "http://gumartinm.name/spring-mainapp/WriteTextService.json";
+        private readonly JsonRpcHttpAsyncClient _remoteClient = new JsonRpcHttpAsyncClient();
+
+        async public Task<string> GetCurrentDateAsync()
+        {
+            // Returning data in a diferent context. Upper layer decides.
+            return await _remoteClient.PostRemoteServiceAsync<string>(uri, "getCurrentDate").ConfigureAwait(false);
+        }
+
+        async public Task SetWriteTextAsync(string text, int number)
+        {
+            // Returning data in a diferent context. Upper layer decides.
+            await _remoteClient.PostRemoteServiceAsync(uriSetWriteText, "setWriteText", text, number).ConfigureAwait(false);
+        }
+
+    }
+}
diff --git a/WindowsPhone/WP8/RemoteAgents/RemoteAgents/packages.config b/WindowsPhone/WP8/RemoteAgents/RemoteAgents/packages.config
new file mode 100644 (file)
index 0000000..6ae732e
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Microsoft.Bcl" version="1.1.3" targetFramework="wp80" />
+  <package id="Microsoft.Bcl.Build" version="1.0.10" targetFramework="wp80" />
+  <package id="Microsoft.Net.Http" version="2.2.18" targetFramework="wp80" />
+  <package id="Newtonsoft.Json" version="6.0.1" targetFramework="wp80" />
+  <package id="NLog" version="2.1.0" targetFramework="wp80" />
+  <package id="NLog.Config" version="2.1.0" targetFramework="wp80" />
+  <package id="NLog.Schema" version="2.1.0" targetFramework="wp80" />
+</packages>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation.sln b/WindowsPhone/WP8/WeatherInformation/WeatherInformation.sln
new file mode 100644 (file)
index 0000000..54c1b02
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30110.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeatherInformation", "WeatherInformation\WeatherInformation.csproj", "{71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.ActiveCfg = Debug|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.Build.0 = Debug|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.Deploy.0 = Debug|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.ActiveCfg = Debug|x86
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.Build.0 = Debug|x86
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.Deploy.0 = Debug|x86
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.ActiveCfg = Release|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.Build.0 = Release|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.Deploy.0 = Release|ARM
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.ActiveCfg = Release|x86
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.Build.0 = Release|x86
+               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml
new file mode 100644 (file)
index 0000000..525c2cd
--- /dev/null
@@ -0,0 +1,23 @@
+<Application
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels" mc:Ignorable="d"
+    x:Class="WeatherInformation.App">
+
+    <!--Recursos de la aplicación-->
+    <Application.Resources>
+        <local:LocalizedStrings xmlns:local="clr-namespace:WeatherInformation" x:Key="LocalizedStrings"/>
+    </Application.Resources>
+
+    <Application.ApplicationLifetimeObjects>
+        <!--Objeto requerido que controla los eventos de duración de la aplicación-->
+        <shell:PhoneApplicationService
+            Launching="Application_Launching" Closing="Application_Closing"
+            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
+    </Application.ApplicationLifetimeObjects>
+
+</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/App.xaml.cs
new file mode 100644 (file)
index 0000000..5ca98eb
--- /dev/null
@@ -0,0 +1,340 @@
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using System.Threading; 
+using System.Globalization; 
+using WeatherInformation.Resources;
+using WeatherInformation.Model;
+using WeatherInformation.Model.Services;
+using WeatherInformation.Model.JsonDataParser;
+
+namespace WeatherInformation
+{
+    public partial class App : Application
+    {
+        // Locale to force CurrentCulture to in InitializeLanguage(). 
+        // Use "qps-PLOC" to deploy pseudolocalized strings. 
+        // Use "" to let user Phone Language selection determine locale. 
+        // public static String appForceCulture = "qps-PLOC";
+        private const String appForceCulture = "en"; 
+
+        // Declare a private variable to store application state.
+        private WeatherData _remoteWeatherData;
+
+        private readonly Object _lock = new Object();
+        // Declare a public property to access the application data variable.
+        public WeatherData ApplicationDataObject
+        {
+            get
+            {
+                lock (_lock)
+                {
+                    return _remoteWeatherData;
+                }
+            }
+            set
+            {
+                lock (_lock)
+                {
+                    if (value != _remoteWeatherData)
+                    {
+                        _remoteWeatherData = value;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Proporcionar acceso sencillo al marco raíz de la aplicación telefónica.
+        /// </summary>
+        /// <returns>Marco raíz de la aplicación telefónica.</returns>
+        public static PhoneApplicationFrame RootFrame { get; private set; }
+
+        /// <summary>
+        /// Constructor para el objeto Application.
+        /// </summary>
+        public App()
+        {
+            // Controlador global para excepciones no detectadas.
+            UnhandledException += Application_UnhandledException;
+
+            // Inicialización XAML estándar
+            InitializeComponent();
+
+            // Inicialización especifica del teléfono
+            InitializePhoneApplication();
+
+            // Inicialización del idioma
+            InitializeLanguage();
+
+            // Create the database if it does not exist.
+            using (LocationDataContext db = new LocationDataContext(LocationDataContext.DBConnectionString))
+            {
+                if (db.DatabaseExists() == false)
+                {
+                    //Create the database
+                    db.CreateDatabase();
+                }
+            }
+
+            // Mostrar información de generación de perfiles gráfica durante la depuración.
+            if (Debugger.IsAttached)
+            {
+                // Mostrar los contadores de velocidad de marcos actual
+                Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+                // Mostrar las áreas de la aplicación que se están volviendo a dibujar en cada marco.
+                //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+                // Habilitar el modo de visualización de análisis de no producción,
+                // que muestra áreas de una página que se entregan a la GPU con una superposición coloreada.
+                //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+                // Impedir que la pantalla se apague mientras se realiza la depuración deshabilitando
+                // la detección de inactividad de la aplicación.
+                // Precaución: solo debe usarse en modo de depuración. Las aplicaciones que deshabiliten la detección de inactividad del usuario seguirán en ejecución
+                // y consumirán energía de la batería cuando el usuario no esté usando el teléfono.
+                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+            }
+        }
+
+        // Código para ejecutar cuando la aplicación se inicia (p.ej. a partir de Inicio)
+        // Este código no se ejecutará cuando la aplicación se reactive
+        private void Application_Launching(object sender, LaunchingEventArgs e)
+        {
+        }
+
+        // Código para ejecutar cuando la aplicación se activa (se trae a primer plano)
+        // Este código no se ejecutará cuando la aplicación se inicie por primera vez
+        // Coming from TOMBSTONED or DORMANT
+        private void Application_Activated(object sender, ActivatedEventArgs e)
+        {
+            if (e.IsApplicationInstancePreserved)
+            {
+                // Coming from DORMANT
+                return;
+            }
+
+            // Coming from TOMBSTONED
+            WeatherData weatherData = null;
+
+            // Check to see if the key for the application state data is in the State dictionary.
+            string jsonForecast = null;
+            string jsonCurrent = null;
+            string city = null;
+            string country = null;
+            if (PhoneApplicationService.Current.State.ContainsKey("JSONForecast") &&
+                PhoneApplicationService.Current.State.ContainsKey("JSONCurrent") &&
+                PhoneApplicationService.Current.State.ContainsKey("City") &&
+                PhoneApplicationService.Current.State.ContainsKey("Country"))
+            {
+                // If it exists, assign the data to the application member variable.
+                jsonForecast = PhoneApplicationService.Current.State["JSONForecast"] as string;
+
+                // If it exists, assign the data to the application member variable.
+                jsonCurrent = PhoneApplicationService.Current.State["JSONCurrent"] as string;
+
+                // If it exists, assign the data to the application member variable.
+                city = PhoneApplicationService.Current.State["City"] as string;
+
+                // If it exists, assign the data to the application member variable.
+                country = PhoneApplicationService.Current.State["Country"] as string;
+            }
+
+            if (!string.IsNullOrEmpty(jsonCurrent) && !string.IsNullOrEmpty(jsonForecast) &&
+                !string.IsNullOrEmpty(city) && !string.IsNullOrEmpty(country))
+            {
+                var parser = new ServiceParser(new JsonParser());
+                weatherData = parser.WeatherDataParser(jsonForecast, jsonCurrent, city, country);
+            }
+
+            ApplicationDataObject = weatherData;
+        }
+
+        // Código para ejecutar cuando la aplicación se desactiva (se envía a segundo plano)
+        // Este código no se ejecutará cuando la aplicación se cierre
+        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+        {
+            // If there is data in the application member variable...
+            var weatherData = ApplicationDataObject;
+            if (weatherData != null)
+            {
+                if (!string.IsNullOrEmpty(weatherData.JSONCurrent) &&
+                    !string.IsNullOrEmpty(weatherData.JSONForecast))
+                {
+                    // Store it in the State dictionary.
+                    PhoneApplicationService.Current.State["JSONForecast"] = weatherData.JSONForecast;
+
+                    // Store it in the State dictionary.
+                    PhoneApplicationService.Current.State["JSONCurrent"] = weatherData.JSONCurrent;
+
+                    // Store it in the State dictionary.
+                    PhoneApplicationService.Current.State["City"] = weatherData.City;
+
+                    // Store it in the State dictionary.
+                    PhoneApplicationService.Current.State["Country"] = weatherData.Country;
+                }
+            }
+        }
+
+        // Código para ejecutar cuando la aplicación se cierra (p.ej., al hacer clic en Atrás)
+        // Este código no se ejecutará cuando la aplicación se desactive
+        private void Application_Closing(object sender, ClosingEventArgs e)
+        {
+            // Asegurarse de que el estado de la aplicación requerida persiste aquí.
+            // The application will not be tombstoned, so save only to isolated storage.
+        }
+
+        // Código para ejecutar si hay un error de navegación
+        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // Ha habido un error de navegación; interrumpir el depurador
+                Debugger.Break();
+            }
+        }
+
+        // Código para ejecutar en excepciones no controladas
+        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+        {
+            if (Debugger.IsAttached)
+            {
+                // Se ha producido una excepción no controlada; interrumpir el depurador
+                Debugger.Break();
+            }
+        }
+
+        #region Inicialización de la aplicación telefónica
+
+        // Evitar inicialización doble
+        private bool phoneApplicationInitialized = false;
+
+        // No agregar ningún código adicional a este método
+        private void InitializePhoneApplication()
+        {
+            if (phoneApplicationInitialized)
+                return;
+
+            // Crear el marco pero no establecerlo como RootVisual todavía; esto permite que
+            // la pantalla de presentación permanezca activa hasta que la aplicación esté lista para la presentación.
+            RootFrame = new PhoneApplicationFrame();
+            RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+            // Controlar errores de navegación
+            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+            // Controlar solicitudes de restablecimiento para borrar la pila de retroceso
+            RootFrame.Navigated += CheckForResetNavigation;
+
+            // Asegurarse de que no volvemos a inicializar
+            phoneApplicationInitialized = true;
+        }
+
+        // No agregar ningún código adicional a este método
+        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+        {
+            // Establecer el objeto visual raíz para permitir que la aplicación se presente
+            if (RootVisual != RootFrame)
+                RootVisual = RootFrame;
+
+            // Quitar este controlador porque ya no es necesario
+            RootFrame.Navigated -= CompleteInitializePhoneApplication;
+        }
+
+        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+        {
+            // Si la aplicación ha recibido una navegación 'reset', tenemos que comprobarlo
+            // en la siguiente navegación para ver si se debe restablecer la pila de páginas
+            if (e.NavigationMode == NavigationMode.Reset)
+                RootFrame.Navigated += ClearBackStackAfterReset;
+        }
+
+        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+        {
+            // Anular registro del evento para que no se vuelva a llamar
+            RootFrame.Navigated -= ClearBackStackAfterReset;
+
+            // Borrar solo la pila de navegaciones 'new' (hacia delante) y 'refresh'
+            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+                return;
+
+            // Por coherencia de la IU, borrar toda la pila de páginas
+            while (RootFrame.RemoveBackEntry() != null)
+            {
+                ; // no hacer nada
+            }
+        }
+
+        #endregion
+
+        // Inicializar la fuente y la dirección de flujo de la aplicación según se define en sus cadenas de recursos traducidas.
+        //
+        // Para asegurarse de que la fuente de la aplicación está alineada con sus idiomas admitidos y que
+        // FlowDirection para todos esos idiomas sigue su dirección tradicional, ResourceLanguage
+        // y ResourceFlowDirection se debe inicializar en cada archivo resx para que estos valores coincidan con ese
+        // referencia cultural del archivo. Por ejemplo:
+        //
+        // AppResources.es-ES.resx
+        //    El valor de ResourceLanguage debe ser "es-ES"
+        //    El valor de ResourceFlowDirection debe ser "LeftToRight"
+        //
+        // AppResources.ar-SA.resx
+        //     El valor de ResourceLanguage debe ser "ar-SA"
+        //     El valor de ResourceFlowDirection debe ser "RightToLeft"
+        //
+        // Para obtener más información sobre cómo traducir aplicaciones para Windows Phone, consulta http://go.microsoft.com/fwlink/?LinkId=262072.
+        //
+        private void InitializeLanguage()
+        {
+            try
+            {
+                // Force CurrentUICulture to locale defined by appForceCulture.
+                // An empty string allows the user's Phone Language setting to 
+                // determine the locale.
+                //if (Debugger.IsAttached && String.IsNullOrWhiteSpace(appForceCulture) == false)
+                //{
+                Thread.CurrentThread.CurrentCulture = new CultureInfo(appForceCulture);
+                Thread.CurrentThread.CurrentUICulture = new CultureInfo(appForceCulture);
+                //}
+
+                // Establecer la fuente para que coincida con el idioma definido por
+                // Cadena de recursos ResourceLanguage para cada idioma admitido.
+                //
+                // Recurrir a la fuente del idioma neutro si el idioma
+                // del teléfono no se admite.
+                //
+                // Si se produce un error del compilador, falta ResourceLanguage
+                // el archivo de recursos.
+                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+                // Establecer FlowDirection de todos los elementos del marco raíz según
+                // en la cadena de recursos ResourceFlowDirection para cada
+                // idioma admitido.
+                //
+                // Si se produce un error del compilador, falta ResourceFlowDirection
+                // el archivo de recursos.
+                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+                RootFrame.FlowDirection = flow;
+            }
+            catch
+            {
+                // Si se detecta aquí una excepción, lo más probable es que se deba a
+                // ResourceLanguage no se ha establecido correctamente en un idioma admitido
+                // o ResourceFlowDirection se ha establecido en un valor distinto de LeftToRight
+                // o RightToLeft.
+
+                if (Debugger.IsAttached)
+                {
+                    Debugger.Break();
+                }
+
+                throw;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png
new file mode 100644 (file)
index 0000000..f7d2e97
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png
new file mode 100644 (file)
index 0000000..7d95d4e
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644 (file)
index 0000000..e0c59ac
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644 (file)
index 0000000..e93b89d
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644 (file)
index 0000000..550b1b5
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644 (file)
index 0000000..686e6b5
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png
new file mode 100644 (file)
index 0000000..d4b5ede
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/add.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/add.png
new file mode 100644 (file)
index 0000000..4b524d6
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/add.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/feature.settings.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/feature.settings.png
new file mode 100644 (file)
index 0000000..8efcfc2
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/feature.settings.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear.png
new file mode 100644 (file)
index 0000000..73a5bbd
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear_night.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear_night.png
new file mode 100644 (file)
index 0000000..2c60054
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_clear_night.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png
new file mode 100644 (file)
index 0000000..2d38702
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png
new file mode 100644 (file)
index 0000000..333afa7
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_fog.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_fog.png
new file mode 100644 (file)
index 0000000..1bebc54
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_fog.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_overcast.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_overcast.png
new file mode 100644 (file)
index 0000000..e3101eb
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_overcast.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png
new file mode 100644 (file)
index 0000000..b0ac4b7
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers.png
new file mode 100644 (file)
index 0000000..6a1860c
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png
new file mode 100644 (file)
index 0000000..97d0f77
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_snow.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_snow.png
new file mode 100644 (file)
index 0000000..ac714cc
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_snow.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_storm.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_storm.png
new file mode 100644 (file)
index 0000000..c339221
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Images/weather_storm.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/LocalizedStrings.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/LocalizedStrings.cs
new file mode 100644 (file)
index 0000000..f0b3b30
--- /dev/null
@@ -0,0 +1,14 @@
+using WeatherInformation.Resources;
+
+namespace WeatherInformation
+{
+    /// <summary>
+    /// Proporciona acceso a los recursos de cadena.
+    /// </summary>
+    public class LocalizedStrings
+    {
+        private static AppResources _localizedResources = new AppResources();
+
+        public AppResources LocalizedResources { get { return _localizedResources; } }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml
new file mode 100644 (file)
index 0000000..5d73b4e
--- /dev/null
@@ -0,0 +1,179 @@
+<phone:PhoneApplicationPage
+    x:Class="WeatherInformation.MainPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
+    shell:SystemTray.IsVisible="True">
+
+    <phone:PhoneApplicationPage.ApplicationBar>
+        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False" Mode="Default">
+            <shell:ApplicationBar.MenuItems>
+                <shell:ApplicationBarMenuItem Click="Location_Click" Text="Location"/>
+                <shell:ApplicationBarMenuItem Click="Settings_Click" Text="Settings"/>
+            </shell:ApplicationBar.MenuItems>
+            <shell:ApplicationBarIconButton Click="Location_Click" IconUri="/Images/add.png"  Text="Location" />
+            <shell:ApplicationBarIconButton Click="Settings_Click" IconUri="/Images/feature.settings.png" Text="Settings"/>
+        </shell:ApplicationBar>
+    </phone:PhoneApplicationPage.ApplicationBar>
+    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
+    <Grid x:Name="LayoutRoot" Background="Transparent">
+
+        <!-- NOTA PARA LA TRADUCCIÓN:
+            Para traducir las cadenas mostradas, copia sus valores a las claves con el nombre
+            correspondiente en el archivo de recursos del idioma neutro (AppResources.resx) de la aplicación y
+            reemplaza el valor de texto codificado de forma rígida entre las comillas de los atributos
+            con la cláusula de enlace cuya ruta de acceso apunte a ese nombre de cadena.
+
+            Por ejemplo:
+
+                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
+
+            Este enlace apunta al recurso de cadena de la plantilla denominado "ApplicationTitle".
+
+            Al agregar idiomas admitidos en la pestaña Propiedades del proyecto se creará un
+            nuevo archivo resx por idioma que puede contener los valores traducidos de las
+            cadenas de la interfaz de usuario. El enlace de estos ejemplos hará que el valor de los atributos
+            se tome del archivo .resx correspondiente al valor de
+            CurrentUICulture de la aplicación en tiempo de ejecución.
+         -->
+
+        <!--Control Pivot-->
+        <phone:Pivot x:Name="TitleTextCityCountry" Title="{Binding TitleTextCityCountry}">
+            <!--Elemento Pivot uno-->
+            <phone:PivotItem Header="{Binding LocalizedResources.MainPageForecastHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
+                <phone:LongListSelector x:Name="ForecastItems" Margin="0,0,-12,0" ItemsSource="{Binding ForecastItems}" SelectionChanged="LongListSelector_SelectionChanged">
+                    <phone:LongListSelector.ItemTemplate>
+                        <DataTemplate>
+                            <Grid>
+                                <Grid.RowDefinitions>
+                                    <RowDefinition Height="*" />
+                                    <RowDefinition Height="*" />
+                                    <RowDefinition Height="*" />
+                                </Grid.RowDefinitions>
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="*" />
+                                    <ColumnDefinition Width="*" />
+                                    <ColumnDefinition Width="*" />
+                                </Grid.ColumnDefinitions>
+                                <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Vertical" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                </StackPanel>
+                                <StackPanel Grid.Column="1" Grid.Row="0" Orientation="Vertical" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding LineThree}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <TextBlock Text="{Binding LineFour}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                </StackPanel>
+                                <Image Grid.Column="2" Grid.Row="0" Source="{Binding LineFive}" Width="100" Height="100" Margin="12,-6,12,0" />
+                            </Grid>
+                        </DataTemplate>
+                    </phone:LongListSelector.ItemTemplate>
+                </phone:LongListSelector>
+            </phone:PivotItem>
+
+            <!--Elemento Pivot dos-->
+            <phone:PivotItem Header="{Binding LocalizedResources.MainPageCurrentHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
+                <ScrollViewer HorizontalScrollBarVisibility="Auto">
+                    <Grid>
+                        <Grid.RowDefinitions>
+                            <RowDefinition />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                        </Grid.RowDefinitions>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="*" />
+                        </Grid.ColumnDefinitions>
+                        <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
+                            <Image Source="{Binding CurrentWeatherImagePath}" Width="100" Height="100" Margin="12,0" />
+                            <StackPanel  Orientation="Vertical" VerticalAlignment="Center">
+                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding CurrentMaxTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                    <TextBlock Text="{Binding CurrentMaxTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                </StackPanel>
+                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding CurrentMinTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                    <TextBlock Text="{Binding CurrentMinTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                </StackPanel>
+                            </StackPanel>
+                        </StackPanel>
+                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,28,0,0">
+                            <TextBlock Text="{Binding CurrentConditions}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                        </StackPanel>
+                        <Grid Grid.Column="0" Grid.Row="2" Margin="0,10,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding CurrentFeelsLikeText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentFeelsLikeTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentFeelsLikeTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding CurrentSnowText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0,12,0"/>
+                                <TextBlock Text="{Binding CurrentSnow}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentSnowUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                        </Grid>
+                        <Grid Grid.Column="0" Grid.Row="3" Margin="0,10,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding CurrentHumidityText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentHumidity}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentHumidityUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding CurrentWindText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentWind}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentWindUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                        </Grid>
+                        <Grid Grid.Column="0" Grid.Row="4" Margin="0,10,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding CurrentRainText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentRain}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentRainUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
+                                 <TextBlock Text="{Binding CurrentCloudsText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                 <TextBlock Text="{Binding CurrentClouds}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                 <TextBlock Text="{Binding CurrentCloudsUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                        </Grid>
+                        <StackPanel Grid.Column="0" Grid.Row="5" VerticalAlignment="Center" HorizontalAlignment="Center">
+                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                                <TextBlock Text="{Binding CurrentPressureText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentPressure}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding CurrentPressureUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                                <TextBlock Text="{Binding CurrentSunRiseText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentSunRise}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                                <TextBlock Text="{Binding CurrentSunSetText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding CurrentSunSet}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                            </StackPanel>
+                        </StackPanel>
+                    </Grid>
+                </ScrollViewer>
+            </phone:PivotItem>
+        </phone:Pivot>
+
+        <!--Quitar la marca de comentarios para ver una cuadrícula de alineación que
+            ayuda a comprobar que los controles están alineados en los límites normales.  La imagen tiene un margen superior de -32px para
+            tener en cuenta la bandeja del sistema. Establécelo en 0 (o quite el margen)
+            si la bandeja del sistema está oculta.
+
+            Antes de enviarla, quita este código XAML y la propia imagen.-->
+        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" IsHitTestVisible="False" />-->
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MainPage.xaml.cs
new file mode 100644 (file)
index 0000000..8c2b9cf
--- /dev/null
@@ -0,0 +1,190 @@
+using Microsoft.Phone.Controls;
+using System;
+using System.Linq;
+using System.Globalization;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using WeatherInformation.Model;
+using WeatherInformation.Model.Services;
+using WeatherInformation.Resources;
+using WeatherInformation.ViewModels;
+using System.Threading.Tasks;
+using WeatherInformation.Model.JsonDataParser;
+
+namespace WeatherInformation
+{
+    public partial class MainPage : PhoneApplicationPage
+    {
+        private MainViewModel _mainViewModel;
+        private bool _isNewPageInstance = false;
+
+        // Constructor
+        public MainPage()
+        {
+            InitializeComponent();
+
+            _isNewPageInstance = true;
+
+            // Código de ejemplo para traducir ApplicationBar
+            //BuildLocalizedApplicationBar();
+        }
+
+
+        // Cargar datos para los elementos MainViewModel
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            base.OnNavigatedTo(e);
+
+            // If _isNewPageInstance is true, the page constuctor has been called, so
+            // state may need to be restored.
+            if (_isNewPageInstance)
+            {
+                if (_mainViewModel == null)
+                {
+                    _mainViewModel = new MainViewModel(new SettingsViewModel());
+                }
+
+                DataContext = _mainViewModel;
+            }
+            // Set _isNewPageInstance to false. If the user navigates back to this page
+            // and it has remained in memory, this value will continue to be false.
+            _isNewPageInstance = false;
+
+            UpdateApplicationDataUI();
+        }
+
+        async private void UpdateApplicationDataUI()
+        {
+            Location locationItem = null;
+            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
+            {
+                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
+            }
+
+            if (locationItem == null)
+            {
+                // Nothing to do.
+                return;
+            }
+
+            // If the application member variable is not empty,
+            // set the page's data object from the application member variable.
+            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
+            if (!IsDataFresh(locationItem.LastRemoteDataUpdate) || weatherData == null)
+            {
+                // Load remote data (aynchronous way by means of async/await)
+
+                // Gets the data from the web.
+                (Application.Current as WeatherInformation.App).ApplicationDataObject =
+                    await GetRemoteDataAsync(locationItem);
+
+                using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
+                {
+                    locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
+                    locationItem.LastRemoteDataUpdate = DateTime.UtcNow;
+                    db.SubmitChanges();
+                }
+            }
+
+            // Call UpdateUI on the UI thread.
+            // Without ConfigureAwait(false) await returns data on the calling thread. In this case the calling one
+            // is the UI thread. So, I can save the call to Dispatcher.BeginInvoke.
+            //Dispatcher.BeginInvoke(() => UpdateUI());
+            UpdateUI();
+        }
+
+        void UpdateUI()
+        {
+            // Set the ApplicationData and ApplicationDataStatus members of the ViewModel
+            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
+
+            if (weatherData != null)
+            {
+                _mainViewModel.LoadData(weatherData);
+            }
+        }
+
+        private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            LongListSelector longListSelector = sender as LongListSelector;
+
+            // TODO: with LINQ :(
+            ItemViewModel element = longListSelector.SelectedItem as ItemViewModel;
+            int index = longListSelector.ItemsSource.IndexOf(element);
+            String uri = string.Format(CultureInfo.InvariantCulture, "/SelectedDatePage.xaml?parameter={0}", index);
+            NavigationService.Navigate(new Uri(uri, UriKind.Relative));
+        }
+
+        /// <summary>
+        /// Retrieve remote weather data.
+        /// </summary>
+        async public Task<WeatherData> GetRemoteDataAsync(Location locationItem)
+        {
+            double latitude = locationItem.Latitude;
+            double longitude = locationItem.Longitude;
+            int resultsNumber = Convert.ToInt32(AppResources.APIOpenWeatherMapResultsNumber);
+
+            CustomHTTPClient httpClient = new CustomHTTPClient();
+
+            string formattedForecastURL = String.Format(
+                CultureInfo.InvariantCulture, AppResources.URIAPIOpenWeatherMapForecast,
+                AppResources.APIVersionOpenWeatherMap, latitude, longitude, resultsNumber);
+            string jsonForecast = await httpClient.GetWeatherDataAsync(formattedForecastURL).ConfigureAwait(false);
+
+            string formattedCurrentURL = String.Format(
+                CultureInfo.InvariantCulture, AppResources.URIAPIOpenWeatherMapCurrent,
+                AppResources.APIVersionOpenWeatherMap, latitude, longitude, resultsNumber);
+            string jsonCurrent = await httpClient.GetWeatherDataAsync(formattedCurrentURL).ConfigureAwait(false);
+
+            var parser = new ServiceParser(new JsonParser());
+            var weatherData = parser.WeatherDataParser(jsonForecast, jsonCurrent, locationItem.City, locationItem.Country);
+
+            return weatherData;
+        }
+
+        private bool IsDataFresh(DateTime? lastUpdate)
+        {
+            if (lastUpdate == null)
+            {
+                return false;
+            }
+
+            // Check the time elapsed since data was last saved to isolated storage.
+            TimeSpan TimeSinceLastSave = DateTime.UtcNow - lastUpdate.Value;
+
+            if (TimeSinceLastSave.TotalSeconds < 30)
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        private void Location_Click(object sender, EventArgs e)
+        {
+            NavigationService.Navigate(new Uri("/MapPage.xaml", UriKind.Relative));
+        }
+
+        private void Settings_Click(object sender, EventArgs e)
+        {
+            NavigationService.Navigate(new Uri("/SettingsPage.xaml", UriKind.Relative));
+        }
+
+        // Código de ejemplo para compilar una ApplicationBar traducida
+        //private void BuildLocalizedApplicationBar()
+        //{
+        //    // Establecer ApplicationBar de la página en una nueva instancia de ApplicationBar.
+        //    ApplicationBar = new ApplicationBar();
+
+        //    // Crear un nuevo botón y establecer el valor de texto en la cadena traducida de AppResources.
+        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
+        //    appBarButton.Text = AppResources.AppBarButtonText;
+        //    ApplicationBar.Buttons.Add(appBarButton);
+
+        //    // Crear un nuevo elemento de menú con la cadena traducida de AppResources.
+        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
+        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
+        //}
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml
new file mode 100644 (file)
index 0000000..5c4bd37
--- /dev/null
@@ -0,0 +1,46 @@
+<phone:PhoneApplicationPage
+    x:Class="WeatherInformation.MapPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
+    FontFamily="{StaticResource PhoneFontFamilyNormal}"
+    FontSize="{StaticResource PhoneFontSizeNormal}"
+    Foreground="{StaticResource PhoneForegroundBrush}"
+    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
+    mc:Ignorable="d"
+    shell:SystemTray.IsVisible="True">
+
+    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
+    <Grid x:Name="LayoutRoot" Background="Transparent">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition/>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="Auto"/>
+        </Grid.RowDefinitions>
+
+        <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
+        <StackPanel Grid.Row="0" Margin="12,17,0,28">
+            <TextBlock Text="{Binding LocalizedResources.LocationPageTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
+            <TextBlock x:Name="LocationTextCityCountry" Text="{Binding LocalizedResources.LocationPageSubTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle2Style}"/>
+        </StackPanel>
+
+        <!--ContentPanel. Colocar aquí el contenido adicional-->
+        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+            <maps:Map x:Name="mapWeatherInformation" Grid.Row="1" Tap="mapWeatherInformation_Tap"/>
+        </Grid>
+        <Grid Grid.Row="2">
+            <Button x:Name="SaveLocationButton"  Content="{Binding LocalizedResources.MapPageSaveLocationButton, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Click="SaveLocationButton_Click" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+            <Button x:Name="GetCurrentLocationButton" HorizontalAlignment="Right" VerticalAlignment="Center" Content="{Binding LocalizedResources.MapPageGetCurrentLocationButton, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Click="GetCurrentLocationButton_Click"/>
+        </Grid>
+        <Grid Grid.Row="3">
+            <Button x:Name="ZoomInButton" Click="ZoomInButton_Click" HorizontalAlignment="Left" VerticalAlignment="Center" Content="Zoom +"/>
+            <Button x:Name="ZoomOutButton" Click="ZoomOutButton_Click" HorizontalAlignment="Right" VerticalAlignment="Center" Content="Zoom -"/>
+        </Grid>
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/MapPage.xaml.cs
new file mode 100644 (file)
index 0000000..d67feb8
--- /dev/null
@@ -0,0 +1,266 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Windows.Devices.Geolocation;
+using System.Device.Location;
+using System.Windows.Shapes;
+using System.Windows.Media;
+using Microsoft.Phone.Maps.Controls;
+using WeatherInformation.Resources;
+using System.Globalization;
+using Microsoft.Phone.Maps.Services;
+using System.Threading.Tasks;
+using WeatherInformation.Model;
+
+namespace WeatherInformation
+{
+    public partial class MapPage : PhoneApplicationPage
+    {
+        // TODO anything better than these two instance fields? :(
+        private string _city;
+        private string _country;
+
+        public MapPage()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+
+            Location locationItem = null;
+            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
+            {
+                // Define the query to gather all of the to-do items.
+                // var toDoItemsInDB = from Location location in _locationDB.Locations where location.IsSelected select location;
+                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
+            }
+            
+            if (locationItem != null)
+            {
+                GeoCoordinate geoCoordinate = ConvertLocation(locationItem);
+
+                this.UpdateMap(geoCoordinate, locationItem.City, locationItem.Country);
+            }
+        }
+
+        private async Task GetCurrentLocationAndUpdateMap()
+        {
+            Geolocator geolocator = new Geolocator();
+            geolocator.DesiredAccuracyInMeters = 50;
+
+            Geoposition geoposition = await geolocator.GetGeopositionAsync(
+                maximumAge: TimeSpan.FromSeconds(10),
+                timeout: TimeSpan.FromSeconds(10)
+                );
+            GeoCoordinate currentGeoCoordinate = CoordinateHelper.ConvertGeocoordinate(geoposition.Coordinate);
+
+            ReverseGeocodeAndUpdateMap(currentGeoCoordinate);
+        }
+
+        // TODO: problems updating Map because this method may be called when automatically retrieving
+        //       the current user's location or when user taps on map tyring to choose by herself her location.
+        //       There could be 2 threads updating Map at the same time. Solution: remove the feature
+        //       of getting the current user's location (user must always choose her/his location instead of doing
+        //       it automatically)
+        private void ReverseGeocodeAndUpdateMap(GeoCoordinate currentGeoCoordinate)
+        {
+            ReverseGeocodeQuery currentReverseGeocodeQuery = new ReverseGeocodeQuery();
+            currentReverseGeocodeQuery.GeoCoordinate = currentGeoCoordinate;
+            currentReverseGeocodeQuery.QueryCompleted += QueryCompletedCallback;
+            currentReverseGeocodeQuery.QueryAsync();
+        }
+
+        private void QueryCompletedCallback(object sender, QueryCompletedEventArgs<IList<MapLocation>> eventData)
+        {
+            if (eventData.Cancelled)
+            {
+                // Be careful!!! If you throw exception from this point your program will finish with "Unhandled Exception".
+                return;
+            }
+
+            Exception errorException = eventData.Error;
+            if (errorException != null)
+            {
+                MessageBox.Show(
+                    AppResources.NoticeErrorLocationAutodetection,
+                    AppResources.UnavailableAutomaticCurrentLocationMessageBox,
+                    MessageBoxButton.OK);
+            }
+            else
+            {
+                if (eventData.Result.Count > 0)
+                {
+                    MapAddress address = eventData.Result[0].Information.Address;
+                    GeoCoordinate currentGeoCoordinate = eventData.Result[0].GeoCoordinate;
+
+                    UpdateMap(currentGeoCoordinate, address.City, address.Country);
+                }
+            }
+        }
+
+        private void UpdateMap(GeoCoordinate geoCoordinate, string city, string country)
+        {
+            // Create a small circle to mark the current location.
+            Ellipse myCircle = new Ellipse();
+            myCircle.Fill = new SolidColorBrush(Colors.Blue);
+            myCircle.Height = 20;
+            myCircle.Width = 20;
+            myCircle.Opacity = 50;
+
+            // Create a MapOverlay to contain the circle.
+            MapOverlay myLocationOverlay = new MapOverlay();
+            myLocationOverlay.Content = myCircle;
+            myLocationOverlay.PositionOrigin = new Point(0.5, 0.5);
+            myLocationOverlay.GeoCoordinate = geoCoordinate;
+
+            // Create a MapLayer to contain the MapOverlay.
+            MapLayer myLocationLayer = new MapLayer();
+            myLocationLayer.Add(myLocationOverlay);
+
+            this.mapWeatherInformation.Layers.Clear();
+
+            this.mapWeatherInformation.Center = geoCoordinate;
+            this.mapWeatherInformation.ZoomLevel = 13;
+
+            if (string.IsNullOrEmpty(city))
+            {
+                city = AppResources.DefaultCity;
+            }
+            if (string.IsNullOrEmpty(country))
+            {
+                country = AppResources.DefaultCountry;
+            }
+            this.LocationTextCityCountry.Text = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
+            _city = city;
+            _country = country;
+            // Add the MapLayer to the Map.
+            this.mapWeatherInformation.Layers.Add(myLocationLayer);
+        }
+
+        private static class CoordinateHelper
+        {
+            public static GeoCoordinate ConvertGeocoordinate(Geocoordinate geocoordinate)
+            {
+                return new GeoCoordinate
+                    (
+                    geocoordinate.Latitude,
+                    geocoordinate.Longitude,
+                    geocoordinate.Altitude ?? Double.NaN,
+                    geocoordinate.Accuracy,
+                    geocoordinate.AltitudeAccuracy ?? Double.NaN,
+                    geocoordinate.Speed ?? Double.NaN,
+                    geocoordinate.Heading ?? Double.NaN
+                    );
+            }
+        }
+
+        // TODO: check data before storing :(
+        // http://stackoverflow.com/questions/4521435/what-specific-values-can-a-c-sharp-double-represent-that-a-sql-server-float-can
+        private void StoreLocation(GeoCoordinate geocoordinate)
+        {
+            Location locationItem = null;
+            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
+            {
+                // Define the query to gather all of the to-do items.
+                // var toDoItemsInDB = from Location location in _locationDB.Locations where location.IsSelected select location;
+                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
+
+                if (locationItem != null)
+                {
+                    locationItem.Latitude = geocoordinate.Latitude;
+                    locationItem.Longitude = geocoordinate.Longitude;
+                    locationItem.Altitude = geocoordinate.Altitude;
+                    locationItem.City = _city ?? "";
+                    locationItem.Country = _country ?? "";
+                    locationItem.HorizontalAccuracy = geocoordinate.HorizontalAccuracy;
+                    locationItem.VerticalAccuracy = geocoordinate.VerticalAccuracy;
+                    locationItem.Speed = geocoordinate.Speed;
+                    locationItem.Course = geocoordinate.Course;
+                    locationItem.IsSelected = true;
+                    locationItem.LastRemoteDataUpdate = null;
+                }
+                else
+                {
+                    locationItem = new Location()
+                    {
+                        Latitude = geocoordinate.Latitude,
+                        Longitude = geocoordinate.Longitude,
+                        Altitude = geocoordinate.Altitude,
+                        City = _city ?? "",
+                        Country = _country ?? "",
+                        HorizontalAccuracy = geocoordinate.HorizontalAccuracy,
+                        VerticalAccuracy = geocoordinate.VerticalAccuracy,
+                        Speed = geocoordinate.Speed,
+                        Course = geocoordinate.Course,
+                        IsSelected = true,
+                        LastRemoteDataUpdate = null,
+                    };
+
+                    // Add a location item to the local database.
+                    db.Locations.InsertOnSubmit(locationItem);
+                }
+
+                db.SubmitChanges();
+            }
+        }
+
+        private GeoCoordinate ConvertLocation(Location locationItem)
+        {
+            return new GeoCoordinate
+                (
+                locationItem.Latitude,
+                locationItem.Longitude,
+                locationItem.Altitude,
+                locationItem.HorizontalAccuracy,
+                locationItem.VerticalAccuracy,
+                locationItem.Speed,
+                locationItem.Course
+                );
+        }
+
+        private void mapWeatherInformation_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+        {
+            var point = e.GetPosition(this.mapWeatherInformation);
+            GeoCoordinate geocoordinate = this.mapWeatherInformation.ConvertViewportPointToGeoCoordinate(point);
+            ReverseGeocodeAndUpdateMap(geocoordinate);
+        }
+
+        private async void GetCurrentLocationButton_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                await this.GetCurrentLocationAndUpdateMap();
+            }
+            catch (Exception ex)
+            {
+                // TODO: make sure when exception in GetCurrentLocationAndUpdateMap we catch it here.
+                MessageBox.Show(
+                    AppResources.NoticeErrorLocationAutodetection,
+                    AppResources.UnavailableAutomaticCurrentLocationMessageBox,
+                    MessageBoxButton.OK);
+            }
+        }
+
+        private void SaveLocationButton_Click(object sender, RoutedEventArgs e)
+        {
+            // TODO: Could there some problem if user clicks button and thread is in this very moment updating map?
+            var geoCoordinate = this.mapWeatherInformation.Center;
+
+            StoreLocation(geoCoordinate);
+        }
+
+        private void ZoomOutButton_Click(object sender, RoutedEventArgs e)
+        {
+            this.mapWeatherInformation.ZoomLevel = this.mapWeatherInformation.ZoomLevel - 1;
+        }
+
+        private void ZoomInButton_Click(object sender, RoutedEventArgs e)
+        {
+            this.mapWeatherInformation.ZoomLevel = this.mapWeatherInformation.ZoomLevel + 1;
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs
new file mode 100644 (file)
index 0000000..d3e9557
--- /dev/null
@@ -0,0 +1,9 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Clouds
+    {
+        public int all { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs
new file mode 100644 (file)
index 0000000..78aeee3
--- /dev/null
@@ -0,0 +1,10 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Coord
+    {
+        public double lon { get; set; }
+        public double lat { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs
new file mode 100644 (file)
index 0000000..d2e1479
--- /dev/null
@@ -0,0 +1,22 @@
+using System.Collections.Generic;
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class CurrentWeather
+    {
+        public Coord coord { get; set; }
+        public Sys sys { get; set; }
+        public List<Weather> weather { get; set; }
+        public string @base { get; set; }
+        public Main main { get; set; }
+        public Wind wind { get; set; }
+        public Snow snow { get; set; }
+        public Rain rain { get; set; }
+        public Clouds clouds { get; set; }
+        public int dt { get; set; }
+        public int id { get; set; }
+        public string name { get; set; }
+        public int cod { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs
new file mode 100644 (file)
index 0000000..78ad137
--- /dev/null
@@ -0,0 +1,13 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Main
+    {
+        public double temp { get; set; }
+        public double pressure { get; set; }
+        public int humidity { get; set; }
+        public double temp_min { get; set; }
+        public double temp_max { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs
new file mode 100644 (file)
index 0000000..ec9b570
--- /dev/null
@@ -0,0 +1,19 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Rain
+    {
+        private double threeHours;
+
+        public void set3h(double three)
+        {
+            this.threeHours = three;
+        }
+
+        public double get3h()
+        {
+            return this.threeHours;
+        }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs
new file mode 100644 (file)
index 0000000..01108fb
--- /dev/null
@@ -0,0 +1,19 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Snow
+    {
+        private double threeHours;
+
+        public void set3h(double three)
+        {
+            this.threeHours = three;
+        }
+
+        public double get3h()
+        {
+            return this.threeHours;
+        }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs
new file mode 100644 (file)
index 0000000..b707f46
--- /dev/null
@@ -0,0 +1,12 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Sys
+    {
+        public double message { get; set; }
+        public string country { get; set; }
+        public int sunrise { get; set; }
+        public int sunset { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs
new file mode 100644 (file)
index 0000000..281d68a
--- /dev/null
@@ -0,0 +1,12 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Weather
+    {
+        public int id { get; set; }
+        public string main { get; set; }
+        public string description { get; set; }
+        public string icon { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs
new file mode 100644 (file)
index 0000000..a48b82c
--- /dev/null
@@ -0,0 +1,10 @@
+
+namespace WeatherInformation.Model.CurrentWeatherParser
+{
+    public class Wind
+    {
+        public double speed { get; set; }
+        public double deg { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs
new file mode 100644 (file)
index 0000000..519ee00
--- /dev/null
@@ -0,0 +1,13 @@
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class City
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public Coord coord { get; set; }
+        public string country { get; set; }
+        public int population { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs
new file mode 100644 (file)
index 0000000..d5556ac
--- /dev/null
@@ -0,0 +1,10 @@
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class Coord
+    {
+        public double lon { get; set; }
+        public double lat { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs
new file mode 100644 (file)
index 0000000..0395b3f
--- /dev/null
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class ForecastWeather
+    {
+        public string cod { get; set; }
+        public double message { get; set; }
+        public City city { get; set; }
+        public int cnt { get; set; }
+        public List<WeatherInformation.Model.ForecastWeatherParser.List> list { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs
new file mode 100644 (file)
index 0000000..c57e3c7
--- /dev/null
@@ -0,0 +1,18 @@
+using System.Collections.Generic;
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class List
+    {
+        public int dt { get; set; }
+        public Temp temp { get; set; }
+        public double pressure { get; set; }
+        public int humidity { get; set; }
+        public List<Weather> weather { get; set; }
+        public double speed { get; set; }
+        public int deg { get; set; }
+        public int clouds { get; set; }
+        public double rain { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs
new file mode 100644 (file)
index 0000000..6c1eac5
--- /dev/null
@@ -0,0 +1,14 @@
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class Temp
+    {
+        public double day { get; set; }
+        public double min { get; set; }
+        public double max { get; set; }
+        public double night { get; set; }
+        public double eve { get; set; }
+        public double morn { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs
new file mode 100644 (file)
index 0000000..fbca69b
--- /dev/null
@@ -0,0 +1,12 @@
+
+namespace WeatherInformation.Model.ForecastWeatherParser
+{
+    public class Weather
+    {
+        public int id { get; set; }
+        public string main { get; set; }
+        public string description { get; set; }
+        public string icon { get; set; }
+    }
+}
+
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs
new file mode 100644 (file)
index 0000000..36d6ae0
--- /dev/null
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+
+namespace WeatherInformation.Model.Images
+{
+    class RemoteImagesTranslation
+    {
+        // C# Language Specification§10.11
+        // If a class contains any static fields with initializers, those initializers are executed
+        // in textual order immediately prior to executing the static constructor.
+        private readonly static Dictionary<string, string> images = new Dictionary<string, string>();
+
+        static RemoteImagesTranslation()
+        {
+            images.Add("01d", "weather_clear");
+            images.Add("01n", "weather_clear_night");
+            images.Add("02d", "weather_few_clouds");
+            images.Add("02n", "weather_few_clouds_night");
+            images.Add("03d", "weather_few_clouds");
+            images.Add("03n", "weather_few_clouds");
+            images.Add("04d", "weather_overcast");
+            images.Add("04n", "weather_overcast");
+            images.Add("09d", "weather_showers");
+            images.Add("09n", "weather_showers");
+            images.Add("10d", "weather_showers_scattered");
+            images.Add("10n", "weather_showers_scattered");
+            images.Add("11d", "weather_storm");
+            images.Add("11n", "weather_storm");
+            images.Add("13d", "weather_snow");
+            images.Add("13n", "weather_snow");
+            images.Add("50d", "weather_fog");
+            images.Add("50n", "weather_fog");
+        }
+
+        public static string GetTransaltedImage(string id)
+        {
+            string value;
+            images.TryGetValue(id, out value);
+
+            return value;
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs
new file mode 100644 (file)
index 0000000..8c2e7a0
--- /dev/null
@@ -0,0 +1,26 @@
+using Newtonsoft.Json;
+using System;
+
+namespace WeatherInformation.Model.JsonDataParser
+{
+    class JsonParser
+    {
+        /// <summary>
+        /// The _json _settings.
+        /// </summary>
+        private static readonly JsonSerializerSettings _jsonSettings =
+            new JsonSerializerSettings
+            {
+                Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
+                {
+                    //Console.WriteLine(args.ErrorContext.Error.Message); No logs for WP8 :(
+                    args.ErrorContext.Handled = true;
+                }
+            };
+
+        public TWeatherData ParserWeatherData<TWeatherData>(String jsonData)
+        {
+            return JsonConvert.DeserializeObject<TWeatherData>(jsonData, _jsonSettings);
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Location.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Location.cs
new file mode 100644 (file)
index 0000000..6f29b0f
--- /dev/null
@@ -0,0 +1,273 @@
+using System;
+using System.ComponentModel;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+
+namespace WeatherInformation.Model
+{
+    [Table]
+    public class Location : INotifyPropertyChanged, INotifyPropertyChanging
+    {
+        // Version column aids update performance.
+        [Column(IsVersion = true)]
+        private Binary _version;
+
+        private int _itemId;
+        [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
+        public int ItemId
+        {
+            get
+            {
+                return _itemId;
+            }
+            set
+            {
+                if (_itemId != value)
+                {
+                    NotifyPropertyChanging("ItemId");
+                    _itemId = value;
+                    NotifyPropertyChanged("ItemId");
+                }
+            }
+        }
+
+        private bool _isSelected;
+        [Column(CanBeNull = false)]
+        public bool IsSelected
+        {
+            get
+            {
+                return _isSelected;
+            }
+            set
+            {
+                if (_isSelected != value)
+                {
+                    NotifyPropertyChanging("IsSelected");
+                    _isSelected = value;
+                    NotifyPropertyChanged("IsSelected");
+                }
+            }
+        }
+
+        private double _latitude;
+        [Column(CanBeNull = false)]
+        public double Latitude
+        {
+            get
+            {
+                return _latitude;
+            }
+            set
+            {
+                if (_latitude != value)
+                {
+                    NotifyPropertyChanging("Latitude");
+                    _latitude = value;
+                    NotifyPropertyChanged("Latitude");
+                }
+            }
+        }
+
+        private double _longitude;
+        [Column(CanBeNull = false)]
+        public double Longitude
+        {
+            get
+            {
+                return _longitude;
+            }
+            set
+            {
+                if (_longitude != value)
+                {
+                    NotifyPropertyChanging("Longitude");
+                    _longitude = value;
+                    NotifyPropertyChanged("Longitude");
+                }
+            }
+        }
+
+        private double _altitude;
+        [Column(CanBeNull = false)]
+        public double Altitude
+        {
+            get
+            {
+                return _altitude;
+            }
+            set
+            {
+                if (_altitude != value)
+                {
+                    NotifyPropertyChanging("Altitude");
+                    _altitude = value;
+                    NotifyPropertyChanged("Altitude");
+                }
+            }
+        }
+
+        private double _horizontalAccuracy;
+        [Column(CanBeNull = false)]
+        public double HorizontalAccuracy
+        {
+            get
+            {
+                return _horizontalAccuracy;
+            }
+            set
+            {
+                if (_horizontalAccuracy != value)
+                {
+                    NotifyPropertyChanging("HorizontalAccuracy");
+                    _horizontalAccuracy = value;
+                    NotifyPropertyChanged("HorizontalAccuracy");
+                }
+            }
+        }
+
+        private double _verticalAccuracy;
+        [Column(CanBeNull = false)]
+        public double VerticalAccuracy
+        {
+            get
+            {
+                return _verticalAccuracy;
+            }
+            set
+            {
+                if (_verticalAccuracy != value)
+                {
+                    NotifyPropertyChanging("VerticalAccuracy");
+                    _verticalAccuracy = value;
+                    NotifyPropertyChanged("VerticalAccuracy");
+                }
+            }
+        }
+
+        private double _speed;
+        [Column(CanBeNull = false)]
+        public double Speed
+        {
+            get
+            {
+                return _speed;
+            }
+            set
+            {
+                if (_speed != value)
+                {
+                    NotifyPropertyChanging("Speed");
+                    _speed = value;
+                    NotifyPropertyChanged("Speed");
+                }
+            }
+        }
+
+        private double _course;
+        [Column(CanBeNull = false)]
+        public double Course
+        {
+            get
+            {
+                return _course;
+            }
+            set
+            {
+                if (_course != value)
+                {
+                    NotifyPropertyChanging("Course");
+                    _course = value;
+                    NotifyPropertyChanged("Course");
+                }
+            }
+        }
+
+        private string _city;
+        [Column(CanBeNull = false)]
+        public string City
+        {
+            get
+            {
+                return _city;
+            }
+            set
+            {
+                if (_city != value)
+                {
+                    NotifyPropertyChanging("City");
+                    _city = value;
+                    NotifyPropertyChanged("City");
+                }
+            }
+        }
+
+        private string _country;
+        [Column(CanBeNull = false)]
+        public string Country
+        {
+            get
+            {
+                return _country;
+            }
+            set
+            {
+                if (_country != value)
+                {
+                    NotifyPropertyChanging("Country");
+                    _country = value;
+                    NotifyPropertyChanged("Country");
+                }
+            }
+        }
+
+        private DateTime? _lastRemoteDataUpdate;
+        [Column(CanBeNull = true)]
+        public DateTime? LastRemoteDataUpdate
+        {
+            get
+            {
+                return _lastRemoteDataUpdate;
+            }
+            set
+            {
+                if (_lastRemoteDataUpdate != value)
+                {
+                    NotifyPropertyChanging("LastRemoteDataUpdate");
+                    _lastRemoteDataUpdate = value;
+                    NotifyPropertyChanged("LastRemoteDataUpdate");
+                }
+            }
+        }
+
+        #region INotifyPropertyChanged Members
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        // Used to notify the page that a data context property changed
+        private void NotifyPropertyChanged(string propertyName)
+        {
+            if (PropertyChanged != null)
+            {
+                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+
+        #endregion
+
+        #region INotifyPropertyChanging Members
+
+        public event PropertyChangingEventHandler PropertyChanging;
+
+        // Used to notify the data context that a data context property is about to change
+        private void NotifyPropertyChanging(string propertyName)
+        {
+            if (PropertyChanging != null)
+            {
+                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs
new file mode 100644 (file)
index 0000000..5360ed9
--- /dev/null
@@ -0,0 +1,18 @@
+using System.Data.Linq;
+
+namespace WeatherInformation.Model
+{
+    public class LocationDataContext : DataContext
+    {
+        // Specify the connection string as a static, used in main page and app.xaml.
+        public static string DBConnectionString = "Data Source=isostore:/Locations.sdf";
+
+        // Pass the connection string to the base class.
+        public LocationDataContext(string connectionString)
+            : base(connectionString)
+        { }
+
+        // Specify a single table for the location items.
+        public Table<Location> Locations;
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs
new file mode 100644 (file)
index 0000000..f93fc75
--- /dev/null
@@ -0,0 +1,82 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WeatherInformation.Model.Services
+{
+    class CustomHTTPClient
+    {
+        async public Task<string> GetWeatherDataAsync(string uri)
+        {
+            if (string.IsNullOrEmpty(uri))
+            {
+                throw new ArgumentException("Missing argument", "uri");
+            }
+
+            // TODO: it would be nice to use the same HttpClient for the the 2 requests instead of creating
+            //       a new one for each connection. :( Not easy with using statement and async :(
+            using(HttpClientHandler handler = new HttpClientHandler
+            {
+                // TODO: check if this really works when receiving compressed data.
+                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
+            })
+            using (HttpClient client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) })
+            {
+                HttpRequestHeaders headers = client.DefaultRequestHeaders;
+
+                headers.UserAgent.Clear();
+                headers.UserAgent.Add(new ProductInfoHeaderValue(new ProductHeaderValue("WeatherInformation", "WP8")));
+
+                headers.AcceptCharset.Clear();
+                headers.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8"));
+
+                headers.Accept.Clear();
+                headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+                headers.AcceptEncoding.Clear();
+                headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
+                headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
+
+                // Bypassing Windows cache
+                DateTime currentDate = DateTime.UtcNow;
+                string uriWindowsCacheSucks = String.Concat(uri, currentDate);
+
+                // TODO: HttpCompletionOption, without it, by default, I am buffering the received data.
+                //       in this case it is not a problem but when receiving loads of bytes I do not
+                //       think it is a great idea to buffer all of them... :(
+                using (HttpResponseMessage response = await client.GetAsync(uriWindowsCacheSucks).ConfigureAwait(false))
+                {
+                    response.EnsureSuccessStatusCode();
+
+                    using (HttpContent contentRESULT = response.Content)
+                    {
+                        return await this.ReadResponseAsync(contentRESULT).ConfigureAwait(false);
+                    }
+                }
+            }
+        }
+
+        async private Task<string> ReadResponseAsync(HttpContent content)
+        {
+            Encoding encoding;
+            if (content.Headers != null && content.Headers.ContentType != null && content.Headers.ContentType.CharSet != null)
+            {
+                encoding = Encoding.GetEncoding(content.Headers.ContentType.CharSet);
+            }
+            else
+            {
+                encoding = Encoding.UTF8;
+            }
+
+            using (Stream stream = await content.ReadAsStreamAsync().ConfigureAwait(false))
+            using (StreamReader streamReader = new StreamReader(stream, encoding))
+            {
+                return await streamReader.ReadToEndAsync().ConfigureAwait(false);
+            }
+        }
+    }  
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs
new file mode 100644 (file)
index 0000000..e46219e
--- /dev/null
@@ -0,0 +1,44 @@
+using WeatherInformation.Model.CurrentWeatherParser;
+using WeatherInformation.Model.ForecastWeatherParser;
+using WeatherInformation.Model.JsonDataParser;
+using System;
+
+namespace WeatherInformation.Model.Services
+{
+    class ServiceParser
+    {
+        private readonly JsonParser _jsonParser;
+
+        public ServiceParser(JsonParser jsonParser)
+        {
+            this._jsonParser = jsonParser;
+        }
+
+        public CurrentWeather GetCurrentWeather(String jsonData)
+        {
+            return this._jsonParser.ParserWeatherData<CurrentWeather>(jsonData);
+        }
+
+        public ForecastWeather GetForecastWeather(String jsonData)
+        {
+            return this._jsonParser.ParserWeatherData<ForecastWeather>(jsonData);
+        }
+
+        public WeatherData WeatherDataParser(
+            string jsonForecast, string jsonCurrent, string city, string country)
+        {
+            if (string.IsNullOrEmpty(jsonForecast))
+            {
+                throw new ArgumentException("Missing argument", "JSONForecast");
+            }
+            if (string.IsNullOrEmpty(jsonCurrent))
+            {
+                throw new ArgumentException("Missing argument", "JSONCurrent");
+            }
+
+            var forecast = GetForecastWeather(jsonForecast);
+            var current = GetCurrentWeather(jsonCurrent);
+            return new WeatherData(forecast, jsonForecast, current, jsonCurrent, city, country);
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/WeatherData.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Model/WeatherData.cs
new file mode 100644 (file)
index 0000000..e486922
--- /dev/null
@@ -0,0 +1,33 @@
+using WeatherInformation.Model.CurrentWeatherParser;
+using WeatherInformation.Model.ForecastWeatherParser;
+
+namespace WeatherInformation.Model
+{
+    public class WeatherData
+    {
+        private readonly ForecastWeather _forecast;
+        private readonly string _jsonForecast;
+        private readonly CurrentWeather _current;
+        private readonly string _jsonCurrent;
+        private readonly string _city;
+        private readonly string _country;
+
+        public WeatherData(ForecastWeather forecast, string jsonForecast, CurrentWeather current,
+                           string jsonCurrent, string city, string country)
+        {
+            _forecast = forecast;
+            _jsonForecast = jsonForecast;
+            _current = current;
+            _jsonCurrent = jsonCurrent;
+            _city = city;
+            _country = country;
+        }
+
+        public ForecastWeather Forecast { get { return _forecast; } }
+        public string JSONForecast { get { return _jsonForecast; } }
+        public CurrentWeather Current { get { return _current; } }
+        public string JSONCurrent { get { return _jsonCurrent; } }
+        public string City { get { return _city; } }
+        public string Country { get { return _country; } }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AppManifest.xml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AppManifest.xml
new file mode 100644 (file)
index 0000000..3b998eb
--- /dev/null
@@ -0,0 +1,4 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e310a8c
--- /dev/null
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// La información general de un ensamblado se controla mediante el siguiente 
+// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("WeatherInformation")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WeatherInformation")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si ComVisible se establece en False, los componentes COM no verán los 
+// tipos de este ensamblado.  Si necesita obtener acceso a un tipo de este ensamblado desde 
+// COM, establezca el atributo ComVisible en True en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM
+[assembly: Guid("21be107b-f7de-4ff1-b103-90430c323fe2")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+//      Versión principal
+//      Versión secundaria 
+//      Número de compilación
+//      Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y revisión 
+// mediante el carácter '*', como se muestra a continuación:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en")]
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml
new file mode 100644 (file)
index 0000000..46b8cd5
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+  <DefaultLanguage xmlns="" code="en" />
+  <Languages xmlns="">
+    <Language code="es" />
+    <Language code="qps-ploc" />
+  </Languages>
+  <App xmlns="" ProductID="{71d9693c-af50-4d7f-ac37-811ba1f1a0d7}" Title="WeatherInformation" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="Gustavo Martin Morcuende" Description="Sample description" Publisher="gumartinm.name" PublisherID="{78440e1b-f001-4e24-a0ea-dce58b830f07}">
+    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
+    <Capabilities>
+      <Capability Name="ID_CAP_NETWORKING" />
+      <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
+      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
+      <Capability Name="ID_CAP_SENSORS" />
+      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
+      <Capability Name="ID_CAP_MAP" />
+      <Capability Name="ID_CAP_LOCATION" />
+    </Capabilities>
+    <Tasks>
+      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
+    </Tasks>
+    <Tokens>
+      <PrimaryToken TokenID="WeatherInformationToken" TaskName="_default">
+        <TemplateFlip>
+          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
+          <Count>0</Count>
+          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
+          <Title>WeatherInformation</Title>
+          <BackContent></BackContent>
+          <BackBackgroundImageURI></BackBackgroundImageURI>
+          <BackTitle></BackTitle>
+          <DeviceLockImageURI></DeviceLockImageURI>
+          <HasLarge></HasLarge>
+        </TemplateFlip>
+      </PrimaryToken>
+    </Tokens>
+    <ScreenResolutions>
+      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
+      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
+      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
+    </ScreenResolutions>
+  </App>
+</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/README_FIRST.txt b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/README_FIRST.txt
new file mode 100644 (file)
index 0000000..ce40c01
--- /dev/null
@@ -0,0 +1,3 @@
+For the Windows Phone toolkit make sure that you have
+marked the icons in the "Toolkit.Content" folder as content.  That way they 
+can be used as the icons for the ApplicationBar control.
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs
new file mode 100644 (file)
index 0000000..35806cd
--- /dev/null
@@ -0,0 +1,540 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Este código fue generado por una herramienta.
+//     Versión de runtime:4.0.30319.34014
+//
+//     Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+//     se vuelve a generar el código.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WeatherInformation.Resources {
+    using System;
+    
+    
+    /// <summary>
+    ///   Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
+    /// </summary>
+    // StronglyTypedResourceBuilder generó automáticamente esta clase
+    // a través de una herramienta como ResGen o Visual Studio.
+    // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen
+    // con la opción /str o recompile su proyecto de VS.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources() {
+        }
+        
+        /// <summary>
+        ///   Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WeatherInformation.Resources.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las
+        ///   búsquedas de recursos mediante esta clase de recurso fuertemente tipado.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a 14.
+        /// </summary>
+        public static string APIOpenWeatherMapResultsNumber {
+            get {
+                return ResourceManager.GetString("APIOpenWeatherMapResultsNumber", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a 2.5.
+        /// </summary>
+        public static string APIVersionOpenWeatherMap {
+            get {
+                return ResourceManager.GetString("APIVersionOpenWeatherMap", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a add.
+        /// </summary>
+        public static string AppBarButtonText {
+            get {
+                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Menu item.
+        /// </summary>
+        public static string AppBarMenuItemText {
+            get {
+                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a MY APPLICATION.
+        /// </summary>
+        public static string ApplicationTitle {
+            get {
+                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a City not found.
+        /// </summary>
+        public static string DefaultCity {
+            get {
+                return ResourceManager.GetString("DefaultCity", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Country not found.
+        /// </summary>
+        public static string DefaultCountry {
+            get {
+                return ResourceManager.GetString("DefaultCountry", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a City, country.
+        /// </summary>
+        public static string LocationPageSubTitle {
+            get {
+                return ResourceManager.GetString("LocationPageSubTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Pick your location.
+        /// </summary>
+        public static string LocationPageTitle {
+            get {
+                return ResourceManager.GetString("LocationPageTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a CLOUDS.
+        /// </summary>
+        public static string MainPageCurrentClouds {
+            get {
+                return ResourceManager.GetString("MainPageCurrentClouds", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a %.
+        /// </summary>
+        public static string MainPageCurrentCloudsUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentCloudsUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a FEELS LIKE.
+        /// </summary>
+        public static string MainPageCurrentFeelsLike {
+            get {
+                return ResourceManager.GetString("MainPageCurrentFeelsLike", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a current.
+        /// </summary>
+        public static string MainPageCurrentHeader {
+            get {
+                return ResourceManager.GetString("MainPageCurrentHeader", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a HUMIDITY.
+        /// </summary>
+        public static string MainPageCurrentHumidity {
+            get {
+                return ResourceManager.GetString("MainPageCurrentHumidity", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a %.
+        /// </summary>
+        public static string MainPageCurrentHumidityUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentHumidityUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a PRESSURE.
+        /// </summary>
+        public static string MainPageCurrentPressure {
+            get {
+                return ResourceManager.GetString("MainPageCurrentPressure", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a hpa.
+        /// </summary>
+        public static string MainPageCurrentPressureUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentPressureUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a RAIN.
+        /// </summary>
+        public static string MainPageCurrentRain {
+            get {
+                return ResourceManager.GetString("MainPageCurrentRain", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a mm 3h.
+        /// </summary>
+        public static string MainPageCurrentRainUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentRainUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a SNOW.
+        /// </summary>
+        public static string MainPageCurrentSnow {
+            get {
+                return ResourceManager.GetString("MainPageCurrentSnow", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a mm 3h.
+        /// </summary>
+        public static string MainPageCurrentSnowUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentSnowUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a SUN RISE (UTC).
+        /// </summary>
+        public static string MainPageCurrentSunRise {
+            get {
+                return ResourceManager.GetString("MainPageCurrentSunRise", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a SUN SET (UTC).
+        /// </summary>
+        public static string MainPageCurrentSunSet {
+            get {
+                return ResourceManager.GetString("MainPageCurrentSunSet", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a WIND.
+        /// </summary>
+        public static string MainPageCurrentWind {
+            get {
+                return ResourceManager.GetString("MainPageCurrentWind", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a m/s.
+        /// </summary>
+        public static string MainPageCurrentWindUnits {
+            get {
+                return ResourceManager.GetString("MainPageCurrentWindUnits", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a forecast.
+        /// </summary>
+        public static string MainPageForecastHeader {
+            get {
+                return ResourceManager.GetString("MainPageForecastHeader", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a City, country.
+        /// </summary>
+        public static string MainPageTitle {
+            get {
+                return ResourceManager.GetString("MainPageTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Current Location.
+        /// </summary>
+        public static string MapPageGetCurrentLocationButton {
+            get {
+                return ResourceManager.GetString("MapPageGetCurrentLocationButton", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Save Location.
+        /// </summary>
+        public static string MapPageSaveLocationButton {
+            get {
+                return ResourceManager.GetString("MapPageSaveLocationButton", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Location autodetection seems to be disabled in your phone.
+        /// </summary>
+        public static string NoticeErrorLocationAutodetection {
+            get {
+                return ResourceManager.GetString("NoticeErrorLocationAutodetection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a There is not stored locations..
+        /// </summary>
+        public static string NoticeThereIsNotCurrentLocation {
+            get {
+                return ResourceManager.GetString("NoticeThereIsNotCurrentLocation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a LeftToRight.
+        /// </summary>
+        public static string ResourceFlowDirection {
+            get {
+                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a en.
+        /// </summary>
+        public static string ResourceLanguage {
+            get {
+                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a DAY.
+        /// </summary>
+        public static string SelectedDatePageDay {
+            get {
+                return ResourceManager.GetString("SelectedDatePageDay", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a EVENING.
+        /// </summary>
+        public static string SelectedDatePageEvening {
+            get {
+                return ResourceManager.GetString("SelectedDatePageEvening", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a MORNING.
+        /// </summary>
+        public static string SelectedDatePageMorning {
+            get {
+                return ResourceManager.GetString("SelectedDatePageMorning", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a NIGHT.
+        /// </summary>
+        public static string SelectedDatePageNight {
+            get {
+                return ResourceManager.GetString("SelectedDatePageNight", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Forecast day numbers.
+        /// </summary>
+        public static string SettingsForecastDayNumbersHeader {
+            get {
+                return ResourceManager.GetString("SettingsForecastDayNumbersHeader", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a 5-Day Forecast.
+        /// </summary>
+        public static string SettingsForecastDayNumbersSelectionFive {
+            get {
+                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionFive", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a 14-Day Forecast.
+        /// </summary>
+        public static string SettingsForecastDayNumbersSelectionFourteen {
+            get {
+                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionFourteen", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a 10-Day Forecast.
+        /// </summary>
+        public static string SettingsForecastDayNumbersSelectionTen {
+            get {
+                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionTen", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Language.
+        /// </summary>
+        public static string SettingsLanguageHeader {
+            get {
+                return ResourceManager.GetString("SettingsLanguageHeader", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a english.
+        /// </summary>
+        public static string SettingsLanguageSelectionEnglish {
+            get {
+                return ResourceManager.GetString("SettingsLanguageSelectionEnglish", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a spanish.
+        /// </summary>
+        public static string SettingsLanguageSelectionSpanish {
+            get {
+                return ResourceManager.GetString("SettingsLanguageSelectionSpanish", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a settings.
+        /// </summary>
+        public static string SettingsPageHeaderSettings {
+            get {
+                return ResourceManager.GetString("SettingsPageHeaderSettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a Temperature units.
+        /// </summary>
+        public static string SettingsTemperatureUnitsHeader {
+            get {
+                return ResourceManager.GetString("SettingsTemperatureUnitsHeader", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a celsius.
+        /// </summary>
+        public static string SettingsTemperatureUnitsSelectionCentigrade {
+            get {
+                return ResourceManager.GetString("SettingsTemperatureUnitsSelectionCentigrade", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a fahrenheit.
+        /// </summary>
+        public static string SettingsTemperatureUnitsSelectionFahrenheit {
+            get {
+                return ResourceManager.GetString("SettingsTemperatureUnitsSelectionFahrenheit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a ºC.
+        /// </summary>
+        public static string TemperatureUnitsCentigradeSymbol {
+            get {
+                return ResourceManager.GetString("TemperatureUnitsCentigradeSymbol", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a ºF.
+        /// </summary>
+        public static string TemperatureUnitsFahrenheitSymbol {
+            get {
+                return ResourceManager.GetString("TemperatureUnitsFahrenheitSymbol", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a The location master switch might be off or location service is unavailable..
+        /// </summary>
+        public static string UnavailableAutomaticCurrentLocationMessageBox {
+            get {
+                return ResourceManager.GetString("UnavailableAutomaticCurrentLocationMessageBox", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a http://api.openweathermap.org/data/{0}/weather?lat={1}&amp;lon={2}&amp;cnt=1.
+        /// </summary>
+        public static string URIAPIOpenWeatherMapCurrent {
+            get {
+                return ResourceManager.GetString("URIAPIOpenWeatherMapCurrent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Busca una cadena traducida similar a http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}&amp;lon={2}&amp;cnt={3}&amp;mode=json.
+        /// </summary>
+        public static string URIAPIOpenWeatherMapForecast {
+            get {
+                return ResourceManager.GetString("URIAPIOpenWeatherMapForecast", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx
new file mode 100644 (file)
index 0000000..64e05c9
--- /dev/null
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>es</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>MI APLICACIÓN</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>agregar</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Elemento de menú</value>
+  </data>
+  <data name="SettingsLanguageHeader" xml:space="preserve">
+    <value>Idioma</value>
+    <comment>Text in settings page as header</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
+    <value>Unidades de temperatura</value>
+    <comment>Text in settings page</comment>
+  </data>
+  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
+    <value>inglés</value>
+    <comment>Settings page, select English language</comment>
+  </data>
+  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
+    <value>español</value>
+    <comment>Settings page, select Spanish language</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
+    <value>celsius</value>
+    <comment>Settings page, select tempereature units centigrade</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
+    <value>fahrenheit</value>
+    <comment>Settings page, select temperature units fahrenheit</comment>
+  </data>
+  <data name="NoticeThereIsNotCurrentLocation" xml:space="preserve">
+    <value>No hay localizaciones almacenadas.</value>
+    <comment>Main window, notice message, no available locations</comment>
+  </data>
+  <data name="NoticeErrorLocationAutodetection" xml:space="preserve">
+    <value>Detección automática de la ubicación parece estar desactivada en el teléfono</value>
+    <comment>Map window, notice message, error while location autodetection</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersHeader" xml:space="preserve">
+    <value>Prevision, numero días</value>
+    <comment>Text in settings page as header</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionTen" xml:space="preserve">
+    <value>Previsión 10 días</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionFourteen" xml:space="preserve">
+    <value>Previsión 14 días</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionFive" xml:space="preserve">
+    <value>Previsión 5 días</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="LocationPageSubTitle" xml:space="preserve">
+    <value>Ciudad, país</value>
+    <comment>Subtitle in location page</comment>
+  </data>
+  <data name="LocationPageTitle" xml:space="preserve">
+    <value>Selecciona tu localización</value>
+    <comment>Title in location page</comment>
+  </data>
+  <data name="MainPageForecastHeader" xml:space="preserve">
+    <value>previsión</value>
+    <comment>Forecast header in main page</comment>
+  </data>
+  <data name="SettingsPageHeaderSettings" xml:space="preserve">
+    <value>configuración de</value>
+    <comment>Header settings in settings page</comment>
+  </data>
+  <data name="MainPageCurrentHeader" xml:space="preserve">
+    <value>actual</value>
+    <comment>Current header in main page</comment>
+  </data>
+  <data name="MainPageTitle" xml:space="preserve">
+    <value>Ciudad, país</value>
+    <comment>Title in main page</comment>
+  </data>
+  <data name="MainPageCurrentWind" xml:space="preserve">
+    <value>VIENTO</value>
+  </data>
+  <data name="MainPageCurrentSunSet" xml:space="preserve">
+    <value>SOL SE PONE (UTC)</value>
+  </data>
+  <data name="MainPageCurrentSunRise" xml:space="preserve">
+    <value>SOL SALE (UTC)</value>
+  </data>
+  <data name="MainPageCurrentSnow" xml:space="preserve">
+    <value>NIEVE</value>
+  </data>
+  <data name="MainPageCurrentRain" xml:space="preserve">
+    <value>LLUVIA</value>
+  </data>
+  <data name="MainPageCurrentPressure" xml:space="preserve">
+    <value>PRESIÓN</value>
+  </data>
+  <data name="MainPageCurrentHumidity" xml:space="preserve">
+    <value>HUMEDAD</value>
+  </data>
+  <data name="MainPageCurrentClouds" xml:space="preserve">
+    <value>NUBES</value>
+  </data>
+  <data name="MainPageCurrentFeelsLike" xml:space="preserve">
+    <value>SIENTE COMO</value>
+  </data>
+  <data name="SelectedDatePageNight" xml:space="preserve">
+    <value>NOCHE</value>
+  </data>
+  <data name="SelectedDatePageMorning" xml:space="preserve">
+    <value>MAÑANA</value>
+  </data>
+  <data name="SelectedDatePageEvening" xml:space="preserve">
+    <value>TARDE</value>
+  </data>
+  <data name="SelectedDatePageDay" xml:space="preserve">
+    <value>DÍA</value>
+  </data>
+  <data name="MapPageSaveLocationButton" xml:space="preserve">
+    <value>Guardar posición</value>
+    <comment>Map page, button saves the user's chosen location</comment>
+  </data>
+  <data name="MapPageGetCurrentLocationButton" xml:space="preserve">
+    <value>Posición actual</value>
+    <comment>Map page, button get the user's current location</comment>
+  </data>
+  <data name="UnavailableAutomaticCurrentLocationMessageBox" xml:space="preserve">
+    <value>Detección automática de la ubicación parece estar desactivada en el teléfono o el servicio no está disponible.</value>
+    <comment>Message box error: while trying to get automatic current location</comment>
+  </data>
+  <data name="DefaultCountry" xml:space="preserve">
+    <value>País no encontrado</value>
+    <comment>Country, default value.</comment>
+  </data>
+  <data name="DefaultCity" xml:space="preserve">
+    <value>Ciudad no encontrada</value>
+    <comment>City, default value.</comment>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf
new file mode 100644 (file)
index 0000000..5ca1bae
--- /dev/null
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
+  <file datatype="xml" source-language="en" target-language="es" original="AppResources.resx" tool-id="MultilingualAppToolkit" product-name="WeatherInformation" product-version="1.0.0.0" build-num="0">
+    <header>
+      <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="3.1.1085.0" tool-company="Microsoft" />
+    </header>
+    <body>
+      <group id="Resx">
+        <trans-unit id="Resx/ResourceFlowDirection" translate="yes" xml:space="preserve">
+          <source>LeftToRight</source>
+          <target state="translated">LeftToRight</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</note>
+          </trans-unit>
+        <trans-unit id="Resx/ResourceLanguage" translate="yes" xml:space="preserve">
+          <source>en</source>
+          <target state="translated">es</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</note>
+          </trans-unit>
+        <trans-unit id="Resx/ApplicationTitle" translate="yes" xml:space="preserve">
+          <source>MY APPLICATION</source>
+          <target state="translated" state-qualifier="mt-suggestion">MI APLICACIÓN</target>
+        </trans-unit>
+        <trans-unit id="Resx/AppBarButtonText" translate="yes" xml:space="preserve">
+          <source>add</source>
+          <target state="translated">agregar</target>
+        </trans-unit>
+        <trans-unit id="Resx/AppBarMenuItemText" translate="yes" xml:space="preserve">
+          <source>Menu item</source>
+          <target state="translated" state-qualifier="mt-suggestion">Elemento de menú</target>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageHeader" translate="yes" xml:space="preserve">
+          <source>Language</source>
+          <target state="translated" state-qualifier="mt-suggestion">Idioma</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsHeader" translate="yes" xml:space="preserve">
+          <source>Temperature units</source>
+          <target state="translated" state-qualifier="mt-suggestion">Unidades de temperatura</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageSelectionEnglish" translate="yes" xml:space="preserve">
+          <source>english</source>
+          <target state="translated" state-qualifier="mt-suggestion">inglés</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select English language</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageSelectionSpanish" translate="yes" xml:space="preserve">
+          <source>spanish</source>
+          <target state="translated">español</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select Spanish language</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionCentigrade" translate="yes" xml:space="preserve">
+          <source>celsius</source>
+          <target state="translated">celsius</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select tempereature units centigrade</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionFahrenheit" translate="yes" xml:space="preserve">
+          <source>fahrenheit</source>
+          <target state="translated">fahrenheit</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select temperature units fahrenheit</note>
+          </trans-unit>
+        <trans-unit id="Resx/NoticeThereIsNotCurrentLocation" translate="yes" xml:space="preserve">
+          <source>There is not stored locations.</source>
+          <target state="translated">No hay localizaciones almacenadas.</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Main window, notice message, no available locations</note>
+          </trans-unit>
+        <trans-unit id="Resx/NoticeErrorLocationAutodetection" translate="yes" xml:space="preserve">
+          <source>Location autodetection seems to be disabled in your phone</source>
+          <target state="translated">Detección automática de la ubicación parece estar desactivada en el teléfono</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map window, notice message, error while location autodetection</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersHeader" translate="yes" xml:space="preserve">
+          <source>Forecast day numbers</source>
+          <target state="translated">Prevision, numero días</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionTen" translate="yes" xml:space="preserve">
+          <source>10-Day Forecast</source>
+          <target state="translated">Previsión 10 días</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFourteen" translate="yes" xml:space="preserve">
+          <source>14-Day Forecast</source>
+          <target state="translated">Previsión 14 días</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFive" translate="yes" xml:space="preserve">
+          <source>5-Day Forecast</source>
+          <target state="translated">Previsión 5 días</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+          </trans-unit>
+        <trans-unit id="Resx/TemperatureUnitsFahrenheitSymbol" translate="no" xml:space="preserve">
+          <source>ºF</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">º F</target>
+        </trans-unit>
+        <trans-unit id="Resx/LocationPageSubTitle" translate="yes" xml:space="preserve">
+          <source>City, country</source>
+          <target state="translated" state-qualifier="mt-suggestion">Ciudad, país</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Subtitle in location page</note>
+          </trans-unit>
+        <trans-unit id="Resx/LocationPageTitle" translate="yes" xml:space="preserve">
+          <source>Pick your location</source>
+          <target state="translated">Selecciona tu localización</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Title in location page</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageForecastHeader" translate="yes" xml:space="preserve">
+          <source>forecast</source>
+          <target state="translated" state-qualifier="mt-suggestion">previsión</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Forecast header in main page</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsPageHeaderSettings" translate="yes" xml:space="preserve">
+          <source>settings</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">configuración de</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Header settings in settings page</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageTitle" translate="yes" xml:space="preserve">
+          <source>City, country</source>
+          <target state="translated">Ciudad, país</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Title in main page</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentWind" translate="yes" xml:space="preserve">
+          <source>WIND</source>
+          <target state="translated">VIENTO</target>
+        </trans-unit>
+        <trans-unit id="Resx/URIAPIOpenWeatherMapCurrent" translate="no" xml:space="preserve">
+          <source>http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</source>
+          <target state="new">http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentWindUnits" translate="yes" xml:space="preserve">
+          <source>m/s</source>
+          <target state="new">m/s</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentPressureUnits" translate="yes" xml:space="preserve">
+          <source>hpa</source>
+          <target state="new">hpa</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageNight" translate="yes" xml:space="preserve">
+          <source>NIGHT</source>
+          <target state="translated">NOCHE</target>
+        </trans-unit>
+        <trans-unit id="Resx/APIOpenWeatherMapResultsNumber" translate="yes" xml:space="preserve">
+          <source>14</source>
+          <target state="new">14</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+        <trans-unit id="Resx/MapPageSaveLocationButton" translate="yes" xml:space="preserve">
+          <source>Save Location</source>
+          <target state="translated">Guardar posición</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button saves the user's chosen location</note>
+          </trans-unit>
+        <trans-unit id="Resx/MapPageGetCurrentLocationButton" translate="yes" xml:space="preserve">
+          <source>Current Location</source>
+          <target state="translated">Posición actual</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button get the user's current location</note>
+          </trans-unit>
+        <trans-unit id="Resx/DefaultCountry" translate="yes" xml:space="preserve">
+          <source>Country not found</source>
+          <target state="translated">País no encontrado</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Country, default value.</note>
+          </trans-unit>
+        <trans-unit id="Resx/DefaultCity" translate="yes" xml:space="preserve">
+          <source>City not found</source>
+          <target state="translated">Ciudad no encontrada</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">City, default value.</note>
+          </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageMorning" translate="yes" xml:space="preserve">
+          <source>MORNING</source>
+          <target state="translated">MAÑANA</target>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageEvening" translate="yes" xml:space="preserve">
+          <source>EVENING</source>
+          <target state="translated">TARDE</target>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageDay" translate="yes" xml:space="preserve">
+          <source>DAY</source>
+          <target state="translated">DÍA</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSnowUnits" translate="yes" xml:space="preserve">
+          <source>mm 3h</source>
+          <target state="new">mm 3h</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentRainUnits" translate="yes" xml:space="preserve">
+          <source>mm 3h</source>
+          <target state="new">mm 3h</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHumidityUnits" translate="yes" xml:space="preserve">
+          <source>%</source>
+          <target state="new">%</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentCloudsUnits" translate="yes" xml:space="preserve">
+          <source>%</source>
+          <target state="new">%</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSunSet" translate="yes" xml:space="preserve">
+          <source>SUN SET (UTC)</source>
+          <target state="translated">SOL SE PONE (UTC)</target></trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSunRise" translate="yes" xml:space="preserve">
+          <source>SUN RISE (UTC)</source>
+          <target state="translated">SOL SALE (UTC)</target></trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSnow" translate="yes" xml:space="preserve">
+          <source>SNOW</source>
+          <target state="translated">NIEVE</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentRain" translate="yes" xml:space="preserve">
+          <source>RAIN</source>
+          <target state="translated">LLUVIA</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentPressure" translate="yes" xml:space="preserve">
+          <source>PRESSURE</source>
+          <target state="translated">PRESIÓN</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHumidity" translate="yes" xml:space="preserve">
+          <source>HUMIDITY</source>
+          <target state="translated">HUMEDAD</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentFeelsLike" translate="yes" xml:space="preserve">
+          <source>FEELS LIKE</source>
+          <target state="translated">SIENTE COMO</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentClouds" translate="yes" xml:space="preserve">
+          <source>CLOUDS</source>
+          <target state="translated">NUBES</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHeader" translate="yes" xml:space="preserve">
+          <source>current</source>
+          <target state="translated" state-qualifier="mt-suggestion">actual</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Current header in main page</note>
+          </trans-unit>
+        <trans-unit id="Resx/TemperatureUnitsCentigradeSymbol" translate="no" xml:space="preserve">
+          <source>ºC</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">º C</target>
+        </trans-unit>
+        <trans-unit id="Resx/APIVersionOpenWeatherMap" translate="no" xml:space="preserve">
+          <source>2.5</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">2.5</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+        <trans-unit id="Resx/UnavailableAutomaticCurrentLocationMessageBox" translate="yes" xml:space="preserve">
+          <source>The location master switch might be off or location service is unavailable.</source>
+          <target state="translated">Detección automática de la ubicación parece estar desactivada en el teléfono o el servicio no está disponible.</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Message box error: while trying to get automatic current location</note>
+          </trans-unit>
+        <trans-unit id="Resx/URIAPIOpenWeatherMapForecast" translate="no" xml:space="preserve">
+          <source>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">http://API.openweathermap.org/Data/ {0} / previsión/diario? lat = {1}%%amp;lon = {2}%%amp;cnt = {3}%%amp;mode = json</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+          </trans-unit>
+      </group>
+    </body>
+  </file>
+</xliff>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx
new file mode 100644 (file)
index 0000000..be39ccb
--- /dev/null
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>qps-ploc</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>[1BD7D][!!_МĮ ÀРĽÌĆÃČÌÓŇ_!!]</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>[C3F82][!!_àġřéģàŕ_!!]</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>[01F8F][!!_Êĺèmèиţô ðé мèйú_!!]</value>
+  </data>
+  <data name="SettingsLanguageHeader" xml:space="preserve">
+    <value>[D9E46][!!_Ļàйģûáğè_!!]</value>
+    <comment>Text in settings page as header</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
+    <value>[27946][!!_Ţêmþêŗáτúřê ûиìтş_!!]</value>
+    <comment>Text in settings page</comment>
+  </data>
+  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
+    <value>[6390E][!!_įиģľéş_!!]</value>
+    <comment>Settings page, select English language</comment>
+  </data>
+  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
+    <value>[3FC2A][!!_éŝрáñóľ_!!]</value>
+    <comment>Settings page, select Spanish language</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
+    <value>[EFA86][!!_ćęηťíğŕãďõ_!!]</value>
+    <comment>Settings page, select tempereature units centigrade</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
+    <value>[9AF14][!!_ƒáĥřêηĥęîţ_!!]</value>
+    <comment>Settings page, select temperature units fahrenheit</comment>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf
new file mode 100644 (file)
index 0000000..d40fbf3
--- /dev/null
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
+  <file datatype="xml" source-language="en" target-language="qps-ploc" original="AppResources.resx" tool-id="MultilingualAppToolkit" product-name="WeatherInformation" product-version="1.0.0.0" build-num="0">
+    <header>
+      <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="3.1.1085.0" tool-company="Microsoft" />
+    </header>
+    <body>
+      <group id="Resx">
+        <trans-unit id="Resx/ResourceFlowDirection" translate="yes" xml:space="preserve">
+          <source>LeftToRight</source>
+          <target state="translated">LeftToRight</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</note>
+          </trans-unit>
+        <trans-unit id="Resx/ResourceLanguage" translate="yes" xml:space="preserve">
+          <source>en</source>
+          <target state="translated">qps-ploc</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</note>
+          </trans-unit>
+        <trans-unit id="Resx/ApplicationTitle" translate="yes" xml:space="preserve">
+          <source>MY APPLICATION</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[1BD7D][!!_МĮ ÀРĽÌĆÃČÌÓŇ_!!]</target>
+        </trans-unit>
+        <trans-unit id="Resx/AppBarButtonText" translate="yes" xml:space="preserve">
+          <source>add</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[C3F82][!!_àġřéģàŕ_!!]</target>
+        </trans-unit>
+        <trans-unit id="Resx/AppBarMenuItemText" translate="yes" xml:space="preserve">
+          <source>Menu item</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[01F8F][!!_Êĺèmèиţô ðé мèйú_!!]</target>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsHeader" translate="yes" xml:space="preserve">
+          <source>Temperature units</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[27946][!!_Ţêmþêŗáτúřê ûиìтş_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageSelectionSpanish" translate="yes" xml:space="preserve">
+          <source>spanish</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[3FC2A][!!_éŝрáñóľ_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select Spanish language</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionFahrenheit" translate="yes" xml:space="preserve">
+          <source>fahrenheit</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[9AF14][!!_ƒáĥřêηĥęîţ_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select temperature units fahrenheit</note>
+          </trans-unit>
+        <trans-unit id="Resx/NoticeThereIsNotCurrentLocation" translate="yes" xml:space="preserve">
+          <source>There is not stored locations.</source>
+          <target state="new">There is not stored locations.</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Main window, notice message, no available locations</note>
+        </trans-unit>
+        <trans-unit id="Resx/NoticeErrorLocationAutodetection" translate="yes" xml:space="preserve">
+          <source>Location autodetection seems to be disabled in your phone</source>
+          <target state="new">Location autodetection seems to be disabled in your phone</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map window, notice message, error while location autodetection</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersHeader" translate="yes" xml:space="preserve">
+          <source>Forecast day numbers</source>
+          <target state="new">Forecast day numbers</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionTen" translate="yes" xml:space="preserve">
+          <source>10-Day Forecast</source>
+          <target state="new">10-Day Forecast</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFourteen" translate="yes" xml:space="preserve">
+          <source>14-Day Forecast</source>
+          <target state="new">14-Day Forecast</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFive" translate="yes" xml:space="preserve">
+          <source>5-Day Forecast</source>
+          <target state="new">5-Day Forecast</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
+        </trans-unit>
+        <trans-unit id="Resx/TemperatureUnitsFahrenheitSymbol" translate="yes" xml:space="preserve">
+          <source>ºF</source>
+          <target state="new">ºF</target>
+        </trans-unit>
+        <trans-unit id="Resx/LocationPageSubTitle" translate="yes" xml:space="preserve">
+          <source>City, country</source>
+          <target state="new">City, country</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Subtitle in location page</note>
+        </trans-unit>
+        <trans-unit id="Resx/LocationPageTitle" translate="yes" xml:space="preserve">
+          <source>Pick your location</source>
+          <target state="new">Pick your location</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Title in location page</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageForecastHeader" translate="yes" xml:space="preserve">
+          <source>forecast</source>
+          <target state="new">forecast</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Forecast header in main page</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsPageHeaderSettings" translate="yes" xml:space="preserve">
+          <source>settings</source>
+          <target state="new">settings</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Header settings in settings page</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageTitle" translate="yes" xml:space="preserve">
+          <source>City, country</source>
+          <target state="new">City, country</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Title in main page</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentWind" translate="yes" xml:space="preserve">
+          <source>WIND</source>
+          <target state="new">WIND</target>
+        </trans-unit>
+        <trans-unit id="Resx/URIAPIOpenWeatherMapCurrent" translate="yes" xml:space="preserve">
+          <source>http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</source>
+          <target state="new">http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentWindUnits" translate="yes" xml:space="preserve">
+          <source>m/s</source>
+          <target state="new">m/s</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentPressureUnits" translate="yes" xml:space="preserve">
+          <source>hpa</source>
+          <target state="new">hpa</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageNight" translate="yes" xml:space="preserve">
+          <source>NIGHT</source>
+          <target state="new">NIGHT</target>
+        </trans-unit>
+        <trans-unit id="Resx/APIOpenWeatherMapResultsNumber" translate="yes" xml:space="preserve">
+          <source>14</source>
+          <target state="new">14</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/MapPageSaveLocationButton" translate="yes" xml:space="preserve">
+          <source>Save Location</source>
+          <target state="new">Save Location</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button saves the user's chosen location</note>
+        </trans-unit>
+        <trans-unit id="Resx/MapPageGetCurrentLocationButton" translate="yes" xml:space="preserve">
+          <source>Current Location</source>
+          <target state="new">Current Location</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button get the user's current location</note>
+        </trans-unit>
+        <trans-unit id="Resx/DefaultCountry" translate="yes" xml:space="preserve">
+          <source>Country not found</source>
+          <target state="new">Country not found</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Country, default value.</note>
+        </trans-unit>
+        <trans-unit id="Resx/DefaultCity" translate="yes" xml:space="preserve">
+          <source>City not found</source>
+          <target state="new">City not found</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">City, default value.</note>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageMorning" translate="yes" xml:space="preserve">
+          <source>MORNING</source>
+          <target state="new">MORNING</target>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageEvening" translate="yes" xml:space="preserve">
+          <source>EVENING</source>
+          <target state="new">EVENING</target>
+        </trans-unit>
+        <trans-unit id="Resx/SelectedDatePageDay" translate="yes" xml:space="preserve">
+          <source>DAY</source>
+          <target state="new">DAY</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSnowUnits" translate="yes" xml:space="preserve">
+          <source>mm 3h</source>
+          <target state="new">mm 3h</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentRainUnits" translate="yes" xml:space="preserve">
+          <source>mm 3h</source>
+          <target state="new">mm 3h</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHumidityUnits" translate="yes" xml:space="preserve">
+          <source>%</source>
+          <target state="new">%</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentCloudsUnits" translate="yes" xml:space="preserve">
+          <source>%</source>
+          <target state="new">%</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSunSet" translate="yes" xml:space="preserve">
+          <source>SUN SET (UTC)</source>
+          <target state="new">SUN SET (UTC)</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSunRise" translate="yes" xml:space="preserve">
+          <source>SUN RISE (UTC)</source>
+          <target state="new">SUN RISE (UTC)</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentSnow" translate="yes" xml:space="preserve">
+          <source>SNOW</source>
+          <target state="new">SNOW</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentRain" translate="yes" xml:space="preserve">
+          <source>RAIN</source>
+          <target state="new">RAIN</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentPressure" translate="yes" xml:space="preserve">
+          <source>PRESSURE</source>
+          <target state="new">PRESSURE</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHumidity" translate="yes" xml:space="preserve">
+          <source>HUMIDITY</source>
+          <target state="new">HUMIDITY</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentFeelsLike" translate="yes" xml:space="preserve">
+          <source>FEELS LIKE</source>
+          <target state="new">FEELS LIKE</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentClouds" translate="yes" xml:space="preserve">
+          <source>CLOUDS</source>
+          <target state="new">CLOUDS</target>
+        </trans-unit>
+        <trans-unit id="Resx/MainPageCurrentHeader" translate="yes" xml:space="preserve">
+          <source>current</source>
+          <target state="new">current</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Current header in main page</note>
+        </trans-unit>
+        <trans-unit id="Resx/TemperatureUnitsCentigradeSymbol" translate="yes" xml:space="preserve">
+          <source>ºC</source>
+          <target state="new">ºC</target>
+        </trans-unit>
+        <trans-unit id="Resx/APIVersionOpenWeatherMap" translate="yes" xml:space="preserve">
+          <source>2.5</source>
+          <target state="new">2.5</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/UnavailableAutomaticCurrentLocationMessageBox" translate="yes" xml:space="preserve">
+          <source>The location master switch might be off or location service is unavailable.</source>
+          <target state="new">The location master switch might be off or location service is unavailable.</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Message box error: while trying to get automatic current location</note>
+        </trans-unit>
+        <trans-unit id="Resx/URIAPIOpenWeatherMapForecast" translate="yes" xml:space="preserve">
+          <source>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</source>
+          <target state="new">http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
+        </trans-unit>
+        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionCentigrade" translate="yes" xml:space="preserve">
+          <source>celsius</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[EFA86][!!_ćęηťíğŕãďõ_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select tempereature units centigrade</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageSelectionEnglish" translate="yes" xml:space="preserve">
+          <source>english</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[6390E][!!_įиģľéş_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select English language</note>
+          </trans-unit>
+        <trans-unit id="Resx/SettingsLanguageHeader" translate="yes" xml:space="preserve">
+          <source>Language</source>
+          <target state="needs-review-translation" state-qualifier="mt-suggestion">[D9E46][!!_Ļàйģûáğè_!!]</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
+          </trans-unit>
+      </group>
+    </body>
+  </file>
+</xliff>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.resx b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Resources/AppResources.resx
new file mode 100644 (file)
index 0000000..232519c
--- /dev/null
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ResourceFlowDirection" xml:space="preserve">
+    <value>LeftToRight</value>
+    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
+  </data>
+  <data name="ResourceLanguage" xml:space="preserve">
+    <value>en</value>
+    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
+  </data>
+  <data name="ApplicationTitle" xml:space="preserve">
+    <value>MY APPLICATION</value>
+  </data>
+  <data name="AppBarButtonText" xml:space="preserve">
+    <value>add</value>
+  </data>
+  <data name="AppBarMenuItemText" xml:space="preserve">
+    <value>Menu item</value>
+  </data>
+  <data name="SettingsLanguageHeader" xml:space="preserve">
+    <value>Language</value>
+    <comment>Text in settings page as header</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
+    <value>Temperature units</value>
+    <comment>Text in settings page</comment>
+  </data>
+  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
+    <value>english</value>
+    <comment>Settings page, select English language</comment>
+  </data>
+  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
+    <value>spanish</value>
+    <comment>Settings page, select Spanish language</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
+    <value>celsius</value>
+    <comment>Settings page, select tempereature units centigrade</comment>
+  </data>
+  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
+    <value>fahrenheit</value>
+    <comment>Settings page, select temperature units fahrenheit</comment>
+  </data>
+  <data name="URIAPIOpenWeatherMapForecast" xml:space="preserve">
+    <value>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}&amp;lon={2}&amp;cnt={3}&amp;mode=json</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="APIVersionOpenWeatherMap" xml:space="preserve">
+    <value>2.5</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="UnavailableAutomaticCurrentLocationMessageBox" xml:space="preserve">
+    <value>The location master switch might be off or location service is unavailable.</value>
+    <comment>Message box error: while trying to get automatic current location</comment>
+  </data>
+  <data name="NoticeThereIsNotCurrentLocation" xml:space="preserve">
+    <value>There is not stored locations.</value>
+    <comment>Main window, notice message, no available locations</comment>
+  </data>
+  <data name="NoticeErrorLocationAutodetection" xml:space="preserve">
+    <value>Location autodetection seems to be disabled in your phone</value>
+    <comment>Map window, notice message, error while location autodetection</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersHeader" xml:space="preserve">
+    <value>Forecast day numbers</value>
+    <comment>Text in settings page as header</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionFive" xml:space="preserve">
+    <value>5-Day Forecast</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionFourteen" xml:space="preserve">
+    <value>14-Day Forecast</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="SettingsForecastDayNumbersSelectionTen" xml:space="preserve">
+    <value>10-Day Forecast</value>
+    <comment>Settings page, select forecast day numbers</comment>
+  </data>
+  <data name="TemperatureUnitsCentigradeSymbol" xml:space="preserve">
+    <value>ºC</value>
+  </data>
+  <data name="TemperatureUnitsFahrenheitSymbol" xml:space="preserve">
+    <value>ºF</value>
+  </data>
+  <data name="LocationPageSubTitle" xml:space="preserve">
+    <value>City, country</value>
+    <comment>Subtitle in location page</comment>
+  </data>
+  <data name="LocationPageTitle" xml:space="preserve">
+    <value>Pick your location</value>
+    <comment>Title in location page</comment>
+  </data>
+  <data name="MainPageCurrentHeader" xml:space="preserve">
+    <value>current</value>
+    <comment>Current header in main page</comment>
+  </data>
+  <data name="MainPageForecastHeader" xml:space="preserve">
+    <value>forecast</value>
+    <comment>Forecast header in main page</comment>
+  </data>
+  <data name="SettingsPageHeaderSettings" xml:space="preserve">
+    <value>settings</value>
+    <comment>Header settings in settings page</comment>
+  </data>
+  <data name="MainPageTitle" xml:space="preserve">
+    <value>City, country</value>
+    <comment>Title in main page</comment>
+  </data>
+  <data name="MainPageCurrentClouds" xml:space="preserve">
+    <value>CLOUDS</value>
+  </data>
+  <data name="MainPageCurrentFeelsLike" xml:space="preserve">
+    <value>FEELS LIKE</value>
+  </data>
+  <data name="MainPageCurrentHumidity" xml:space="preserve">
+    <value>HUMIDITY</value>
+  </data>
+  <data name="MainPageCurrentPressure" xml:space="preserve">
+    <value>PRESSURE</value>
+  </data>
+  <data name="MainPageCurrentRain" xml:space="preserve">
+    <value>RAIN</value>
+  </data>
+  <data name="MainPageCurrentSnow" xml:space="preserve">
+    <value>SNOW</value>
+  </data>
+  <data name="MainPageCurrentSunRise" xml:space="preserve">
+    <value>SUN RISE (UTC)</value>
+  </data>
+  <data name="MainPageCurrentSunSet" xml:space="preserve">
+    <value>SUN SET (UTC)</value>
+  </data>
+  <data name="MainPageCurrentWind" xml:space="preserve">
+    <value>WIND</value>
+  </data>
+  <data name="URIAPIOpenWeatherMapCurrent" xml:space="preserve">
+    <value>http://api.openweathermap.org/data/{0}/weather?lat={1}&amp;lon={2}&amp;cnt=1</value>
+    <comment>Not to be translated</comment>
+  </data>
+  <data name="MainPageCurrentCloudsUnits" xml:space="preserve">
+    <value>%</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="MainPageCurrentHumidityUnits" xml:space="preserve">
+    <value>%</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="MainPageCurrentRainUnits" xml:space="preserve">
+    <value>mm 3h</value>
+  </data>
+  <data name="MainPageCurrentSnowUnits" xml:space="preserve">
+    <value>mm 3h</value>
+  </data>
+  <data name="MainPageCurrentWindUnits" xml:space="preserve">
+    <value>m/s</value>
+  </data>
+  <data name="MainPageCurrentPressureUnits" xml:space="preserve">
+    <value>hpa</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="SelectedDatePageDay" xml:space="preserve">
+    <value>DAY</value>
+  </data>
+  <data name="SelectedDatePageEvening" xml:space="preserve">
+    <value>EVENING</value>
+  </data>
+  <data name="SelectedDatePageMorning" xml:space="preserve">
+    <value>MORNING</value>
+  </data>
+  <data name="SelectedDatePageNight" xml:space="preserve">
+    <value>NIGHT</value>
+  </data>
+  <data name="APIOpenWeatherMapResultsNumber" xml:space="preserve">
+    <value>14</value>
+    <comment>Not to be translated.</comment>
+  </data>
+  <data name="MapPageSaveLocationButton" xml:space="preserve">
+    <value>Save Location</value>
+    <comment>Map page, button saves the user's chosen location</comment>
+  </data>
+  <data name="MapPageGetCurrentLocationButton" xml:space="preserve">
+    <value>Current Location</value>
+    <comment>Map page, button get the user's current location</comment>
+  </data>
+  <data name="DefaultCity" xml:space="preserve">
+    <value>City not found</value>
+    <comment>City, default value.</comment>
+  </data>
+  <data name="DefaultCountry" xml:space="preserve">
+    <value>Country not found</value>
+    <comment>Country, default value.</comment>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml
new file mode 100644 (file)
index 0000000..6bdfb9e
--- /dev/null
@@ -0,0 +1,48 @@
+<vm:MainViewModel
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:vm="clr-namespace:WeatherInformation.ViewModels"
+    TitleTextCityCountry="City,country"
+    CurrentWeatherImagePath="/Images/weather_clear.png"
+    CurrentMaxTemp="25"
+    CurrentMaxTempUnits="ºC"
+    CurrentMinTemp="15"
+    CurrentFeelsLikeTemp="20"
+    CurrentFeelsLikeText="FEELS LIKE"
+    CurrentPressure="1015"
+    CurrentPressureText="PRESSURE"
+    CurrentRain="10"
+    CurrentRainText="RAIN"
+    CurrentSnow="10"
+    CurrentSnowText="SNOW"
+    CurrentSunRiseText="SUN RISE (UTC)"
+    CurrentSunRise="2014.07.19 07:01:54"
+    CurrentSunSetText="SUN SET (UTC)"
+    CurrentSunSet="2014.07.19 21:41:40"
+    CurrentWind="1.03"
+    CurrentWindText="WIND"
+    CurrentConditions="Sky is Clear"
+    CurrentCloudsText="CLOUDS"
+    CurrentClouds="10"
+    CurrentHumidity="50"
+    CurrentHumidityText="HUMIDITY"
+    CurrentMinTempUnits="ºC"
+    CurrentPressureUnits="hpa"
+    CurrentRainUnits="mm 3h"
+    CurrentSnowUnits="mm 3h"
+    CurrentWindUnits="m/s"
+    CurrentHumidityUnits="%"
+    CurrentFeelsLikeTempUnits="ºC"
+    CurrentCloudsUnits="%">
+
+    <vm:MainViewModel.ForecastItems>
+        <vm:ItemViewModel LineOne="MON" LineTwo="1" LineThree="15ºC" LineFour="10ºC" LineFive="/Images/weather_clear.png"/>
+        <vm:ItemViewModel LineOne="TUE" LineTwo="2" LineThree="16ºC" LineFour="10ºC" LineFive="/Images/weather_clear_night.png"/>
+        <vm:ItemViewModel LineOne="WED" LineTwo="3" LineThree="14ºC" LineFour="10ºC" LineFive="/Images/weather_few_clouds.png"/>
+        <vm:ItemViewModel LineOne="THU" LineTwo="4" LineThree="12ºC" LineFour="10ºC" LineFive="/Images/weather_few_clouds_night.png"/>
+        <vm:ItemViewModel LineOne="FRI" LineTwo="5" LineThree="13ºC" LineFour="10ºC" LineFive="/Images/weather_fog.png"/>
+        <vm:ItemViewModel LineOne="SAT" LineTwo="6" LineThree="20ºC" LineFour="10ºC" LineFive="/Images/weather_overcast.png"/>
+    </vm:MainViewModel.ForecastItems>
+    
+
+</vm:MainViewModel>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml
new file mode 100644 (file)
index 0000000..bc26817
--- /dev/null
@@ -0,0 +1,37 @@
+<ViewModels:SelectedDateViewModel
+    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
+    TitleTextCityCountry="City,country"
+    SelectedDate="July 27"
+    SelectedDateWeatherImagePath="/Images/weather_clear.png"
+    SelectedDateRainText="RAIN"
+    SelectedDateMaxTempUnits="ºC"
+    SelectedDateCloudsText="CLOUDS"
+    SelectedDatePressureText="PRESSURE"
+    SelectedDatePressure="1015"
+    SelectedDateWindText="WIND"
+    SelectedDateConditions="Sky is Clear"
+    SelectedDateWind="1.03"
+    SelectedDateWindUnits="m/s"
+    SelectedDateMinTempUnits="ºC"
+    SelectedDateHumidityUnits="%"
+    SelectedDateRain="10"
+    SelectedDateHumidity="50"
+    SelectedDateMaxTemp="25"
+    SelectedDateMorningTempText="MORNING"
+    SelectedDateMorningTemp="25"
+    SelectedDateMorningTempUnits="ºC"
+    SelectedDateDayTempText="DAY"
+    SelectedDateDayTemp="25"
+    SelectedDateDayTempUnits="ºC"
+    SelectedDateEveningTempText="EVENING"
+    SelectedDateEveningTemp="25"
+    SelectedDateEveningTempUnits="ºC"
+    SelectedDateNightTempText="NIGHT"
+    SelectedDateNightTemp="25"
+    SelectedDateNightTempUnits="ºC"
+    SelectedDatePressureUnits="hpa"
+    SelectedDateClouds="10"
+    SelectedDateRainUnits="mm 3h"
+    SelectedDateMinTemp="15"
+    SelectedDateHumidityText="HUMIDITY"
+    SelectedDateCloudsUnits="%"/>
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml
new file mode 100644 (file)
index 0000000..42302e1
--- /dev/null
@@ -0,0 +1,128 @@
+<phone:PhoneApplicationPage
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
+    x:Class="WeatherInformation.SelectedDate"
+    mc:Ignorable="d"
+    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
+    shell:SystemTray.IsVisible="True"
+    d:DataContext="{d:DesignData /SampleData/SelectedDateViewModelSampleData.xaml}">
+
+       <phone:PhoneApplicationPage.FontFamily>
+               <StaticResource ResourceKey="PhoneFontFamilyNormal"/>
+       </phone:PhoneApplicationPage.FontFamily>
+       <phone:PhoneApplicationPage.FontSize>
+               <StaticResource ResourceKey="PhoneFontSizeNormal"/>
+       </phone:PhoneApplicationPage.FontSize>
+       <phone:PhoneApplicationPage.Foreground>
+               <StaticResource ResourceKey="PhoneForegroundBrush"/>
+       </phone:PhoneApplicationPage.Foreground>
+<!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
+       <Grid x:Name="LayoutRoot" Background="Transparent">
+        <!--Control Pivot-->
+               <phone:Pivot x:Name="TitleTextCityCountry" Title="{Binding TitleTextCityCountry}">
+                       <!--Elemento Pivot uno-->
+                       <phone:PivotItem Header="{Binding SelectedDate}">
+                <ScrollViewer HorizontalScrollBarVisibility="Auto">
+                    <Grid>
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                            <RowDefinition Height="*" />
+                        </Grid.RowDefinitions>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="*" />
+                        </Grid.ColumnDefinitions>
+                        <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
+                            <Image Source="{Binding SelectedDateWeatherImagePath}" Width="100" Height="100" Margin="12,0" />
+                            <StackPanel  Orientation="Vertical" VerticalAlignment="Center">
+                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding SelectedDateMaxTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                    <TextBlock Text="{Binding SelectedDateMaxTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                </StackPanel>
+                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
+                                    <TextBlock Text="{Binding SelectedDateMinTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                    <TextBlock Text="{Binding SelectedDateMinTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                                </StackPanel>
+                            </StackPanel>
+                        </StackPanel>
+                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,28,0,0">
+                            <TextBlock Text="{Binding SelectedDateConditions}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold"/>
+                        </StackPanel>
+
+                        <Grid Grid.Column="0" Grid.Row="2" Margin="0,28,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding SelectedDateHumidityText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding SelectedDateHumidity}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding SelectedDateHumidityUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
+                                <TextBlock Text="{Binding SelectedDateWindText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding SelectedDateWind}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding SelectedDateWindUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                        </Grid>
+                        <Grid Grid.Column="0" Grid.Row="3" Margin="0,28,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding SelectedDateRainText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding SelectedDateRain}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding SelectedDateRainUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
+                                <TextBlock Text="{Binding SelectedDateCloudsText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
+                                <TextBlock Text="{Binding SelectedDateClouds}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
+                                <TextBlock Text="{Binding SelectedDateCloudsUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
+                            </StackPanel>
+                        </Grid>
+                        <StackPanel Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,28,0,0">
+                            <TextBlock Text="{Binding SelectedDatePressureText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" Margin="2,0"/>
+                            <TextBlock Text="{Binding SelectedDatePressure}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Margin="10,0,2,0"/>
+                            <TextBlock Text="{Binding SelectedDatePressureUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" FontWeight="Bold" Margin="2,0"/>
+                        </StackPanel>
+                        <ScrollViewer Grid.Column="0" Grid.Row="5" HorizontalScrollBarVisibility="Auto" Margin="0,28,0,0">
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
+                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
+                                    <TextBlock Text="{Binding SelectedDateMorningTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                                        <TextBlock Text="{Binding SelectedDateMorningTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        <TextBlock Text="{Binding SelectedDateMorningTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    </StackPanel>
+                                </StackPanel>
+                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
+                                    <TextBlock Text="{Binding SelectedDateDayTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                                        <TextBlock Text="{Binding SelectedDateDayTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        <TextBlock Text="{Binding SelectedDateDayTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    </StackPanel>
+                                </StackPanel>
+                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
+                                    <TextBlock Text="{Binding SelectedDateEveningTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                                        <TextBlock Text="{Binding SelectedDateEveningTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        <TextBlock Text="{Binding SelectedDateEveningTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    </StackPanel>
+                                </StackPanel>
+                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
+                                    <TextBlock Text="{Binding SelectedDateNightTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                                        <TextBlock Text="{Binding SelectedDateNightTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        <TextBlock Text="{Binding SelectedDateNightTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                    </StackPanel>
+                                </StackPanel>
+                            </StackPanel>
+                        </ScrollViewer>
+                    </Grid>
+                </ScrollViewer>
+            </phone:PivotItem>
+
+               </phone:Pivot>
+       </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs
new file mode 100644 (file)
index 0000000..cdf906c
--- /dev/null
@@ -0,0 +1,60 @@
+using Microsoft.Phone.Controls;
+using System;
+using System.Globalization;
+using System.IO.IsolatedStorage;
+using System.Windows;
+using WeatherInformation.Model;
+using WeatherInformation.Resources;
+using WeatherInformation.ViewModels;
+
+namespace WeatherInformation
+{
+    public partial class SelectedDate : PhoneApplicationPage
+    {
+        private SelectedDateViewModel _selectedDateViewModel;
+        private bool _isNewPageInstance = false;
+
+        public SelectedDate()
+        {
+            InitializeComponent();
+
+            _isNewPageInstance = true;
+        }
+
+        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
+        {
+            base.OnNavigatedTo(e);
+
+            // If _isNewPageInstance is true, the page constuctor has been called, so
+            // state may need to be restored.
+            if (_isNewPageInstance)
+            {
+                if (_selectedDateViewModel == null)
+                {
+                    _selectedDateViewModel = new SelectedDateViewModel(new SettingsViewModel());
+                }
+
+                DataContext = _selectedDateViewModel;
+            }
+            // Set _isNewPageInstance to false. If the user navigates back to this page
+            // and it has remained in memory, this value will continue to be false.
+            _isNewPageInstance = false;
+
+            // I always receive my parameter even if page was tombstoned. :)
+            string stringIndex = NavigationContext.QueryString["parameter"];
+            int index = Convert.ToInt32(stringIndex, CultureInfo.InvariantCulture);
+
+            UpdateApplicationDataUI(index);
+        }
+
+        void UpdateApplicationDataUI(int index)
+        {
+            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
+
+            if (weatherData != null)
+            {
+                _selectedDateViewModel.LoadData(weatherData, index);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml
new file mode 100644 (file)
index 0000000..b0555a7
--- /dev/null
@@ -0,0 +1,82 @@
+<phone:PhoneApplicationPage
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
+    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
+    x:Class="WeatherInformation.SettingsPage"
+    mc:Ignorable="d"
+    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
+    shell:SystemTray.IsVisible="True">
+
+    <phone:PhoneApplicationPage.Resources>
+        <ViewModels:SettingsViewModel x:Key="SettingsViewModelDataSource" d:IsDataSource="True"/>
+    </phone:PhoneApplicationPage.Resources>
+    <phone:PhoneApplicationPage.FontFamily>
+        <StaticResource ResourceKey="PhoneFontFamilyNormal"/>
+    </phone:PhoneApplicationPage.FontFamily>
+    <phone:PhoneApplicationPage.FontSize>
+        <StaticResource ResourceKey="PhoneFontSizeNormal"/>
+    </phone:PhoneApplicationPage.FontSize>
+    <phone:PhoneApplicationPage.Foreground>
+        <StaticResource ResourceKey="PhoneForegroundBrush"/>
+    </phone:PhoneApplicationPage.Foreground>
+    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
+    <Grid x:Name="LayoutRoot" Background="Transparent" DataContext="{Binding Source={StaticResource SettingsViewModelDataSource}}">
+        <!-- Pivot -->
+        <phone:Pivot Title="WEATHER INFORMATION">
+            <!-- Elemento Pivot uno -->
+            <phone:PivotItem Header="{Binding LocalizedResources.SettingsPageHeaderSettings, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
+                <ScrollViewer HorizontalScrollBarVisibility="Auto">
+                    <Grid VerticalAlignment="Top">
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="Auto" />
+                            <RowDefinition Height="Auto" />
+                            <RowDefinition Height="Auto" />
+                        </Grid.RowDefinitions>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="*" />
+                        </Grid.ColumnDefinitions>
+                        <StackPanel Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Margin="0,30,0,0">
+                            <TextBlock x:Name="TemperatureUnitsHeader" Text="{Binding LocalizedResources.SettingsTemperatureUnitsHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
+                            <toolkit:ListPicker x:Name="TemperatureUnitsSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=TemperaruteUnitsSelectionSetting, Mode=TwoWay}" SelectionChanged="TemperatureUnitsSelection_SelectionChanged">
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsTemperatureUnitsSelectionFahrenheit, Mode=OneWay, Source={StaticResource LocalizedStrings}}" />
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsTemperatureUnitsSelectionCentigrade, Mode=OneWay, Source={StaticResource LocalizedStrings}}" />
+                            </toolkit:ListPicker>
+                        </StackPanel>
+                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Vertical" VerticalAlignment="Center" Margin="0,30,0,0">
+                            <TextBlock x:Name="LanguageHeader" Text="{Binding LocalizedResources.SettingsLanguageHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
+                            <toolkit:ListPicker x:Name="LanguageSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=LanguageSelectionSetting, Mode=TwoWay}" SelectionChanged="LanguageSelection_SelectionChanged">
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsLanguageSelectionEnglish, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsLanguageSelectionSpanish, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
+                            </toolkit:ListPicker>
+                        </StackPanel>
+                        <StackPanel Grid.Column="0" Grid.Row="2" Orientation="Vertical" VerticalAlignment="Center" Margin="0,30,0,0">
+                            <TextBlock x:Name="ForecastDayNumbersHeader" Text="{Binding LocalizedResources.SettingsForecastDayNumbersHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
+                            <toolkit:ListPicker x:Name="ForecastDayNumbersSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=ForecastDayNumbersSelectionSetting, Mode=TwoWay}" SelectionChanged="ForecastDayNumbersSelection_SelectionChanged">
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionFive, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionTen, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
+                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionFourteen, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
+                            </toolkit:ListPicker>
+                        </StackPanel>
+                    </Grid>
+                </ScrollViewer>
+            </phone:PivotItem>
+
+            <!--Elemento Pivot dos-->
+            <phone:PivotItem Header="notifications">
+                <phone:LongListSelector Margin="0,0,-12,0">
+                    <phone:LongListSelector.ItemTemplate>
+                        <DataTemplate>
+                        </DataTemplate>
+                    </phone:LongListSelector.ItemTemplate>
+                </phone:LongListSelector>
+            </phone:PivotItem>
+
+        </phone:Pivot>
+    </Grid>
+
+</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs
new file mode 100644 (file)
index 0000000..52fb429
--- /dev/null
@@ -0,0 +1,51 @@
+using System.Windows.Controls;
+using Microsoft.Phone.Controls;
+
+namespace WeatherInformation
+{
+    public partial class SettingsPage : PhoneApplicationPage
+    {
+
+        public SettingsPage()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// Update temperature units selection when change.
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void TemperatureUnitsSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ListPicker listPicker = sender as ListPicker;
+
+            int index = listPicker.SelectedIndex;
+            var item = listPicker.Items[index];
+            listPicker.SelectedItem = item;
+        }
+
+        /// <summary>
+        /// Update language selection when change.
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void LanguageSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ListPicker listPicker = sender as ListPicker;
+
+            int index = listPicker.SelectedIndex;
+            var item = listPicker.Items[index];
+            listPicker.SelectedItem = item;
+        }
+
+        private void ForecastDayNumbersSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ListPicker listPicker = sender as ListPicker;
+
+            int index = listPicker.SelectedIndex;
+            var item = listPicker.Items[index];
+            listPicker.SelectedItem = item;
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png
new file mode 100644 (file)
index 0000000..4b524d6
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png
new file mode 100644 (file)
index 0000000..4dd724f
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png
new file mode 100644 (file)
index 0000000..7a07466
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png
new file mode 100644 (file)
index 0000000..95bb16d
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png
new file mode 100644 (file)
index 0000000..995deaa
Binary files /dev/null and b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png differ
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs
new file mode 100644 (file)
index 0000000..ea25aff
--- /dev/null
@@ -0,0 +1,123 @@
+using System;
+using System.ComponentModel;
+
+namespace WeatherInformation.ViewModels
+{
+    public class ItemViewModel : INotifyPropertyChanged
+    {
+        private string _lineOne;
+        /// <summary>
+        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
+        /// </summary>
+        /// <returns></returns>
+        public string LineOne
+        {
+            get
+            {
+                return _lineOne;
+            }
+            set
+            {
+                if (value != _lineOne)
+                {
+                    _lineOne = value;
+                    NotifyPropertyChanged("LineOne");
+                }
+            }
+        }
+
+        private string _lineTwo;
+        /// <summary>
+        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
+        /// </summary>
+        /// <returns></returns>
+        public string LineTwo
+        {
+            get
+            {
+                return _lineTwo;
+            }
+            set
+            {
+                if (value != _lineTwo)
+                {
+                    _lineTwo = value;
+                    NotifyPropertyChanged("LineTwo");
+                }
+            }
+        }
+
+        private string _lineThree;
+        /// <summary>
+        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
+        /// </summary>
+        /// <returns></returns>
+        public string LineThree
+        {
+            get
+            {
+                return _lineThree;
+            }
+            set
+            {
+                if (value != _lineThree)
+                {
+                    _lineThree = value;
+                    NotifyPropertyChanged("LineThree");
+                }
+            }
+        }
+
+        private string _lineFour;
+        /// <summary>
+        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
+        /// </summary>
+        /// <returns></returns>
+        public string LineFour
+        {
+            get
+            {
+                return _lineFour;
+            }
+            set
+            {
+                if (value != _lineFour)
+                {
+                    _lineFour = value;
+                    NotifyPropertyChanged("LineFour");
+                }
+            }
+        }
+
+        private string _lineFive;
+        /// <summary>
+        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
+        /// </summary>
+        /// <returns></returns>
+        public string LineFive
+        {
+            get
+            {
+                return _lineFive;
+            }
+            set
+            {
+                if (value != _lineFive)
+                {
+                    _lineFive = value;
+                    NotifyPropertyChanged("LineFive");
+                }
+            }
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(String propertyName)
+        {
+            PropertyChangedEventHandler handler = PropertyChanged;
+            if (null != handler)
+            {
+                handler(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs
new file mode 100644 (file)
index 0000000..09735b3
--- /dev/null
@@ -0,0 +1,317 @@
+using System;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Globalization;
+using WeatherInformation.Model;
+using WeatherInformation.Model.Images;
+using WeatherInformation.Resources;
+
+namespace WeatherInformation.ViewModels
+{
+    public class MainViewModel : INotifyPropertyChanged
+    {
+        private readonly SettingsViewModel _settings;
+
+        public MainViewModel(SettingsViewModel settings)
+        {
+            this.ForecastItems = new ObservableCollection<ItemViewModel>();
+            this.CurrentItems = new ObservableCollection<ItemViewModel>();
+
+            // Get the _settings for this application.
+            _settings = settings;
+        }
+
+        /// <summary>
+        /// Colección para objetos ItemViewModel.
+        /// </summary>
+        public ObservableCollection<ItemViewModel> ForecastItems{ get; private set; }
+        public ObservableCollection<ItemViewModel> CurrentItems { get; private set; }
+        public String TitleTextCityCountry { get; private set; }
+        public String CurrentWeatherImagePath { get; private set; }
+        public String CurrentMaxTemp { get; private set; }
+        public String CurrentMaxTempUnits { get; private set; }
+        public String CurrentMinTemp { get; private set; }
+        public String CurrentMinTempUnits { get; private set; }
+        public String CurrentConditions { get; private set; }
+        public String CurrentFeelsLikeText { get; private set; }
+        public String CurrentFeelsLikeTemp { get; private set; }
+        public String CurrentFeelsLikeTempUnits { get; private set; }
+        public String CurrentHumidityText { get; private set; }
+        public String CurrentHumidity { get; private set; }
+        public String CurrentHumidityUnits { get; private set; }
+        public String CurrentRainText { get; private set; }
+        public String CurrentRain { get; private set; }
+        public String CurrentRainUnits { get; private set; }
+        public String CurrentSnowText { get; private set; }
+        public String CurrentSnow { get; private set; }
+        public String CurrentSnowUnits { get; private set; }
+        public String CurrentWindText { get; private set; }
+        public String CurrentWind { get; private set; }
+        public String CurrentWindUnits { get; private set; }
+        public String CurrentCloudsText { get; private set; }
+        public String CurrentClouds { get; private set; }
+        public String CurrentCloudsUnits { get; private set; }
+        public String CurrentPressureText { get; private set; }
+        public String CurrentPressure { get; private set; }
+        public String CurrentPressureUnits { get; private set; }
+        public String CurrentSunRiseText { get; private set; }
+        public String CurrentSunRise { get; private set; }
+        public String CurrentSunSetText { get; private set; }
+        public String CurrentSunSet { get; private set; }
+
+        /// <summary>
+        /// Crear y agregar unos pocos objetos ItemViewModel a la colección Items.
+        /// </summary>
+        public void LoadData(WeatherData weatherData)
+        {
+            // TODO: there must be a better way than using the index value :(
+
+            int forecastDayNumbers = _settings.ForecastDayNumbersSelectionSetting;     
+            int count;
+            switch(forecastDayNumbers)
+            {
+                case(0):
+                    count = 5;
+                    break;
+                case(1):
+                    count = 10;
+                    break;
+                case(2):
+                    count = 14;
+                    break;
+                default:
+                    count = 14;
+                    break;
+            }
+
+            // TODO: there must be a better way than using the index value :(
+            bool isFahrenheit = true;
+            int temperatureUnitsSelection = _settings.TemperaruteUnitsSelectionSetting;
+            if (temperatureUnitsSelection != 0)
+            {
+                isFahrenheit = false;
+            }
+            double tempUnits = isFahrenheit ? 0 : 273.15;
+            string symbol = isFahrenheit ? AppResources.TemperatureUnitsFahrenheitSymbol : AppResources.TemperatureUnitsCentigradeSymbol;
+            DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+
+            var remoteForecastWeatherData = weatherData.Forecast;
+            if (remoteForecastWeatherData != null)
+            {
+                this.ForecastItems.Clear();
+                
+                foreach (WeatherInformation.Model.ForecastWeatherParser.List item in remoteForecastWeatherData.list)
+                {
+                    DateTime date = unixTime.AddSeconds(item.dt);
+
+                    // TODO: if I do not receive max temp or min temp... Am I going to receive item.temp.max=0 or item.temp.min=0 (I guess because
+                    // double has no null value)
+                    // I need something that is not 0 value in order to find out if OpenWeatherMap sent me values or not :/
+                    // I guess; I am going to need nullable but I will have to modify my Json Parser :(
+                    double maxTemp = item.temp.max;
+                    maxTemp = maxTemp - tempUnits;
+
+                    double minTemp = item.temp.min;
+                    minTemp = minTemp - tempUnits;
+
+                    string weatherImage;
+                    if (item.weather.Count > 0 &&
+                        item.weather[0].icon != null &&
+                        RemoteImagesTranslation.GetTransaltedImage(item.weather[0].icon) != null)
+                    {
+                        weatherImage = RemoteImagesTranslation.GetTransaltedImage(item.weather[0].icon);
+                    }
+                    else
+                    {
+                        weatherImage = "weather_severe_alert";
+                    }
+                    string weatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
+
+                    this.ForecastItems.Add(new ItemViewModel()
+                    {
+                        LineOne = date.ToString("ddd", CultureInfo.InvariantCulture),
+                        LineTwo = date.ToString("dd", CultureInfo.InvariantCulture),
+                        LineThree = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", maxTemp) + symbol,
+                        LineFour = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", minTemp) + symbol,
+                        LineFive = weatherImagePath
+                    });
+
+                    count--;
+                    if (count == 0)
+                    {
+                        break;
+                    }
+                }
+            }
+
+            // TODO: nullables?
+            // TODO: nullables para distinguir cuando hay datos o no. Ahora me llega 0 si no datos (supongo) cuando double/integer
+
+            var remoteCurrentWeatherData = weatherData.Current;
+            if (remoteCurrentWeatherData != null)
+            {
+                string weatherImage;
+                if (remoteCurrentWeatherData.weather.Count > 0 &&
+                    remoteCurrentWeatherData.weather[0].icon != null &&
+                    RemoteImagesTranslation.GetTransaltedImage(remoteCurrentWeatherData.weather[0].icon) != null)
+                {
+                    weatherImage = RemoteImagesTranslation.GetTransaltedImage(remoteCurrentWeatherData.weather[0].icon);
+                }
+                else
+                {
+                    weatherImage = "weather_severe_alert";
+                }
+                this.CurrentWeatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
+                NotifyPropertyChanged("CurrentWeatherImagePath");
+
+                var currentMaxTemp = "";
+                if (remoteCurrentWeatherData.main != null)
+                {
+                    var conversion = remoteCurrentWeatherData.main.temp_max;
+                    conversion -= tempUnits;
+                    currentMaxTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                }
+                this.CurrentMaxTemp = currentMaxTemp;
+                this.CurrentMaxTempUnits = symbol;
+                NotifyPropertyChanged("CurrentMaxTemp");
+                NotifyPropertyChanged("CurrentMaxTempUnits");
+
+                var currentMinTemp = "";
+                if (remoteCurrentWeatherData.main != null)
+                {
+                    var conversion = remoteCurrentWeatherData.main.temp_min;
+                    conversion -= tempUnits;
+                    currentMinTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                }
+                this.CurrentMinTemp = currentMinTemp;
+                this.CurrentMinTempUnits = symbol;
+                NotifyPropertyChanged("CurrentMinTemp");
+                NotifyPropertyChanged("CurrentMinTempUnits");
+
+                // TODO: static resource :(
+                var currentConditions = "no description available";
+                if (remoteCurrentWeatherData.weather.Count > 0)
+                {
+                    currentConditions = remoteCurrentWeatherData.weather[0].description;
+                }
+                this.CurrentConditions = currentConditions;
+                NotifyPropertyChanged("CurrentConditions");
+
+                this.CurrentFeelsLikeText = AppResources.MainPageCurrentFeelsLike;
+                var currentFeelsLikeTemp = "";
+                if (remoteCurrentWeatherData.main != null)
+                {
+                    var conversion = remoteCurrentWeatherData.main.temp;
+                    conversion -= tempUnits;
+                    currentFeelsLikeTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                }
+                this.CurrentFeelsLikeTemp = currentFeelsLikeTemp;
+                this.CurrentFeelsLikeTempUnits = symbol;
+                NotifyPropertyChanged("CurrentFeelsLikeTemp");
+                NotifyPropertyChanged("CurrentFeelsLikeTempUnits");
+                NotifyPropertyChanged("CurrentFeelsLikeText");
+
+                this.CurrentHumidityText = AppResources.MainPageCurrentHumidity;
+                var currentHumidity = "";
+                if (remoteCurrentWeatherData.main != null)
+                {
+                    currentHumidity = remoteCurrentWeatherData.main.humidity.ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentHumidity = currentHumidity;
+                this.CurrentHumidityUnits = AppResources.MainPageCurrentHumidityUnits;
+                NotifyPropertyChanged("CurrentHumidity");
+                NotifyPropertyChanged("CurrentHumidityUnits");
+                NotifyPropertyChanged("CurrentHumidityText");
+
+                this.CurrentRainText = AppResources.MainPageCurrentRain;
+                var currentRain = "";
+                if (remoteCurrentWeatherData.rain != null)
+                {
+                    currentRain = remoteCurrentWeatherData.rain.get3h().ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentRain = currentRain;
+                this.CurrentRainUnits = AppResources.MainPageCurrentRainUnits;
+                NotifyPropertyChanged("CurrentRain");
+                NotifyPropertyChanged("CurrentRainUnits");
+                NotifyPropertyChanged("CurrentRainText");
+
+                this.CurrentSnowText = AppResources.MainPageCurrentSnow;
+                var currentSnow = "";
+                if (remoteCurrentWeatherData.snow != null)
+                {
+                    currentSnow = remoteCurrentWeatherData.snow.get3h().ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentSnow = currentSnow;
+                this.CurrentSnowUnits = AppResources.MainPageCurrentSnowUnits;
+                NotifyPropertyChanged("CurrentSnow");
+                NotifyPropertyChanged("CurrentSnowUnits");
+                NotifyPropertyChanged("CurrentSnowText");
+
+                this.CurrentWindText = AppResources.MainPageCurrentWind;
+                var currentWind = "";
+                if (remoteCurrentWeatherData.wind != null)
+                {
+                    currentWind = remoteCurrentWeatherData.wind.speed.ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentWind = currentWind;
+                this.CurrentWindUnits = AppResources.MainPageCurrentWindUnits;
+                NotifyPropertyChanged("CurrentWind");
+                NotifyPropertyChanged("CurrentWindUnits");
+                NotifyPropertyChanged("CurrentWindText");
+
+                this.CurrentCloudsText = AppResources.MainPageCurrentClouds;
+                var currentClouds = "";
+                if (remoteCurrentWeatherData.clouds != null)
+                {
+                    currentClouds = remoteCurrentWeatherData.clouds.all.ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentClouds = currentClouds;
+                this.CurrentCloudsUnits = AppResources.MainPageCurrentCloudsUnits;
+                NotifyPropertyChanged("CurrentClouds");
+                NotifyPropertyChanged("CurrentCloudsUnits");
+                NotifyPropertyChanged("CurrentCloudsText");
+
+                this.CurrentPressureText = AppResources.MainPageCurrentPressure;
+                var currentPressure = "";
+                if (remoteCurrentWeatherData.main != null)
+                {
+                    currentPressure = remoteCurrentWeatherData.main.pressure.ToString(CultureInfo.InvariantCulture);
+                }
+                this.CurrentPressure = currentPressure;
+                this.CurrentPressureUnits = AppResources.MainPageCurrentPressureUnits;
+                NotifyPropertyChanged("CurrentPressure");
+                NotifyPropertyChanged("CurrentPressureUnits");
+                NotifyPropertyChanged("CurrentPressureText");
+
+                this.CurrentSunRiseText = AppResources.MainPageCurrentSunRise;
+                var sunRiseTime = unixTime.AddSeconds(remoteCurrentWeatherData.sys.sunrise);
+                this.CurrentSunRise = sunRiseTime.ToString("MM/dd/yy H:mm:ss", CultureInfo.InvariantCulture);
+                NotifyPropertyChanged("CurrentSunRise");
+                NotifyPropertyChanged("CurrentSunRiseText");
+
+                this.CurrentSunSetText = AppResources.MainPageCurrentSunSet;
+                var sunSetTime = unixTime.AddSeconds(remoteCurrentWeatherData.sys.sunset);
+                this.CurrentSunSet = sunSetTime.ToString("MM/dd/yy H:mm:ss", CultureInfo.InvariantCulture);
+                NotifyPropertyChanged("CurrentSunSet");
+                NotifyPropertyChanged("CurrentSunSetText");
+
+                string country = weatherData.Country;
+                string city = weatherData.City;
+                string cityCountry = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
+                this.TitleTextCityCountry = cityCountry;
+                NotifyPropertyChanged("TitleTextCityCountry");
+            }
+
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(String propertyName)
+        {
+            PropertyChangedEventHandler handler = PropertyChanged;
+            if (null != handler)
+            {
+                handler(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs
new file mode 100644 (file)
index 0000000..c07f474
--- /dev/null
@@ -0,0 +1,243 @@
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using WeatherInformation.Model;
+using WeatherInformation.Model.Images;
+using WeatherInformation.Resources;
+
+namespace WeatherInformation.ViewModels
+{
+    public class SelectedDateViewModel : INotifyPropertyChanged
+    {
+        private readonly SettingsViewModel _settings;
+
+        public SelectedDateViewModel(SettingsViewModel settings)
+        {
+            _settings = settings;
+        }
+
+        public String TitleTextCityCountry { get; private set; }
+
+        public String SelectedDate { get; private set; }
+        public String SelectedDateWeatherImagePath { get; private set; }
+        public String SelectedDateMaxTemp { get; private set; }
+        public String SelectedDateMaxTempUnits { get; private set; }
+        public String SelectedDateMinTemp { get; private set; }
+        public String SelectedDateMinTempUnits { get; private set; }
+        public String SelectedDateMorningTempText { get; private set; }
+        public String SelectedDateMorningTemp { get; private set; }
+        public String SelectedDateMorningTempUnits { get; private set; }
+        public String SelectedDateDayTempText { get; private set; }
+        public String SelectedDateDayTemp { get; private set; }
+        public String SelectedDateDayTempUnits { get; private set; }
+        public String SelectedDateEveningTempText { get; private set; }
+        public String SelectedDateEveningTemp { get; private set; }
+        public String SelectedDateEveningTempUnits { get; private set; }
+        public String SelectedDateNightTempText { get; private set; }
+        public String SelectedDateNightTemp { get; private set; }
+        public String SelectedDateNightTempUnits { get; private set; }
+        public String SelectedDateConditions { get; private set; }
+        public String SelectedDateHumidityText { get; private set; }
+        public String SelectedDateHumidity { get; private set; }
+        public String SelectedDateHumidityUnits { get; private set; }
+        public String SelectedDateRainText { get; private set; }
+        public String SelectedDateRain { get; private set; }
+        public String SelectedDateRainUnits { get; private set; }
+        public String SelectedDateWindText { get; private set; }
+        public String SelectedDateWind { get; private set; }
+        public String SelectedDateWindUnits { get; private set; }
+        public String SelectedDateCloudsText { get; private set; }
+        public String SelectedDateClouds { get; private set; }
+        public String SelectedDateCloudsUnits { get; private set; }
+        public String SelectedDatePressureText { get; private set; }
+        public String SelectedDatePressure { get; private set; }
+        public String SelectedDatePressureUnits { get; private set; }
+
+        public void LoadData(WeatherData weatherData, int index)
+        {
+            var remoteForecastWeatherData = weatherData.Forecast;
+
+            WeatherInformation.Model.ForecastWeatherParser.List forecast = remoteForecastWeatherData.list[index];
+            DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+            DateTime date = unixTime.AddSeconds(forecast.dt).ToLocalTime();
+            this.SelectedDate = date.ToString("m", CultureInfo.InvariantCulture);
+            NotifyPropertyChanged("SelectedDate");
+
+            bool isFahrenheit = true;
+            int temperatureUnitsSelection = _settings.TemperaruteUnitsSelectionSetting;
+            if (temperatureUnitsSelection != 0)
+            {
+                isFahrenheit = false;
+            }
+            double tempUnits = isFahrenheit ? 0 : 273.15;
+            string symbol = isFahrenheit ? AppResources.TemperatureUnitsFahrenheitSymbol : AppResources.TemperatureUnitsCentigradeSymbol;
+
+            string weatherImage;
+            if (forecast.weather.Count > 0 &&
+                forecast.weather[0].icon != null &&
+                RemoteImagesTranslation.GetTransaltedImage(forecast.weather[0].icon) != null)
+            {
+                weatherImage = RemoteImagesTranslation.GetTransaltedImage(forecast.weather[0].icon);
+            }
+            else
+            {
+                weatherImage = "weather_severe_alert";
+            }
+            this.SelectedDateWeatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
+            NotifyPropertyChanged("SelectedDateWeatherImagePath");
+
+            var selectedDateMaxTemp = "";
+            var selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.max;
+                conversion -= tempUnits;
+                selectedDateMaxTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateMaxTemp = selectedDateMaxTemp;
+            NotifyPropertyChanged("SelectedDateMaxTemp");
+            this.SelectedDateMaxTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateMaxTempUnits");
+
+            var selectedDateMinTemp = "";
+            selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.min;
+                conversion -= tempUnits;
+                selectedDateMinTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateMinTemp = selectedDateMinTemp;
+            NotifyPropertyChanged("SelectedDateMinTemp");
+            this.SelectedDateMaxTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateMinTempUnits");
+
+            // TODO: static resource :(
+            var selectedDateConditions = "no description available";
+            if (forecast.weather.Count > 0)
+            {
+                selectedDateConditions = forecast.weather[0].description;
+            }
+            this.SelectedDateConditions = selectedDateConditions;
+            NotifyPropertyChanged("SelectedDateConditions");
+
+            // TODO: nullables para distinguir cuando hay datos o no. Ahora me llega 0 si no datos (supongo) cuando double/integer
+            this.SelectedDateHumidityText = AppResources.MainPageCurrentHumidity;
+            this.SelectedDateHumidity = forecast.humidity.ToString(CultureInfo.InvariantCulture);
+            this.SelectedDateHumidityUnits = AppResources.MainPageCurrentHumidityUnits;
+            NotifyPropertyChanged("SelectedDateHumidity");
+            NotifyPropertyChanged("SelectedDateHumidityUnits");
+            NotifyPropertyChanged("SelectedDateHumidityText");
+
+            this.SelectedDateRainText = AppResources.MainPageCurrentRain;
+            this.SelectedDateRain = forecast.rain.ToString(CultureInfo.InvariantCulture);
+            this.SelectedDateRainUnits = AppResources.MainPageCurrentRainUnits;
+            NotifyPropertyChanged("SelectedDateRain");
+            NotifyPropertyChanged("SelectedDateRainUnits");
+            NotifyPropertyChanged("SelectedDateRainText");
+
+            this.SelectedDateWindText = AppResources.MainPageCurrentWind;
+            this.SelectedDateWind = forecast.speed.ToString(CultureInfo.InvariantCulture);
+            this.SelectedDateWindUnits = AppResources.MainPageCurrentWindUnits;
+            NotifyPropertyChanged("SelectedDateWind");
+            NotifyPropertyChanged("SelectedDateWindUnits");
+            NotifyPropertyChanged("SelectedDateWindText");
+
+            this.SelectedDateCloudsText = AppResources.MainPageCurrentClouds;
+            this.SelectedDateClouds = forecast.clouds.ToString(CultureInfo.InvariantCulture);
+            this.SelectedDateCloudsUnits = AppResources.MainPageCurrentCloudsUnits;
+            NotifyPropertyChanged("SelectedDateClouds");
+            NotifyPropertyChanged("SelectedDateCloudsUnits");
+            NotifyPropertyChanged("SelectedDateCloudsText");
+
+            this.SelectedDatePressureText = AppResources.MainPageCurrentPressure;
+            this.SelectedDatePressure = forecast.pressure.ToString(CultureInfo.InvariantCulture);
+            this.SelectedDatePressureUnits = AppResources.MainPageCurrentPressureUnits;
+            NotifyPropertyChanged("SelectedDatePressure");
+            NotifyPropertyChanged("SelectedDatePressureUnits");
+            NotifyPropertyChanged("SelectedDatePressureText");
+
+            var selectedDateMorningTemp = "";
+            selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.morn;
+                conversion -= tempUnits;
+                selectedDateMorningTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateMorningTempText = AppResources.SelectedDatePageMorning;
+            NotifyPropertyChanged("SelectedDateMorningTempText");
+            this.SelectedDateMorningTemp = selectedDateMorningTemp;
+            NotifyPropertyChanged("SelectedDateMorningTemp");
+            this.SelectedDateMorningTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateMorningTempUnits");
+
+            var selectedDateDayTemp = "";
+            selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.day;
+                conversion -= tempUnits;
+                selectedDateDayTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateDayTempText = AppResources.SelectedDatePageDay;
+            NotifyPropertyChanged("SelectedDateDayTempText");
+            this.SelectedDateDayTemp = selectedDateDayTemp;
+            NotifyPropertyChanged("SelectedDateDayTemp");
+            this.SelectedDateDayTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateDayTempUnits");
+
+            var selectedDateEveningTemp = "";
+            selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.eve;
+                conversion -= tempUnits;
+                selectedDateEveningTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateEveningTempText = AppResources.SelectedDatePageEvening;
+            NotifyPropertyChanged("SelectedDateEveningTempText");
+            this.SelectedDateEveningTemp = selectedDateEveningTemp;
+            NotifyPropertyChanged("SelectedDateEveningTemp");
+            this.SelectedDateEveningTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateEveningTempUnits");
+
+            var selectedDateNightTemp = "";
+            selectedDateTempUnits = "";
+            if (forecast.temp != null)
+            {
+                var conversion = forecast.temp.night;
+                conversion -= tempUnits;
+                selectedDateNightTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
+                selectedDateTempUnits = symbol;
+            }
+            this.SelectedDateNightTempText = AppResources.SelectedDatePageNight;
+            NotifyPropertyChanged("SelectedDateNightTempText");
+            this.SelectedDateNightTemp = selectedDateNightTemp;
+            NotifyPropertyChanged("SelectedDateNightTemp");
+            this.SelectedDateNightTempUnits = selectedDateTempUnits;
+            NotifyPropertyChanged("SelectedDateNightTempUnits");
+
+            string country = weatherData.Country;
+            string city = weatherData.City;
+            string cityCountry = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
+            this.TitleTextCityCountry = cityCountry;
+            NotifyPropertyChanged("TitleTextCityCountry");
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(String propertyName)
+        {
+            PropertyChangedEventHandler handler = PropertyChanged;
+            if (null != handler)
+            {
+                handler(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs
new file mode 100644 (file)
index 0000000..3babef1
--- /dev/null
@@ -0,0 +1,191 @@
+using System;
+using System.ComponentModel;
+using System.IO.IsolatedStorage;
+
+namespace WeatherInformation.ViewModels
+{
+    // TODO: IMHO INotifyPropertyChanged does not do anything useful in this class... NotifyPropertyChanged has no effect :(
+    public class SettingsViewModel : INotifyPropertyChanged
+    {
+        // Settings
+        private readonly IsolatedStorageSettings _settings;
+
+        // The key names of _settings
+        private const string _languageSelectionSettingKeyName = "LanguageSelection";
+        private const string _temperatureUnitsSelectionSettingKeyName = "TemperatureUnitsSelection";
+        private const string _forecastDayNumbersSelectionSelectionSettingKeyName = "ForecastDayNumbersSelection";
+
+        // The default value of ListPicker _settings
+        private const int _languageSelectionSettingDefault = 0;
+        private const int _temperatureUnitsSelectionSettingDefault = 0;
+        private const int _forecastDayNumbersSelectionSettingDefault = 0;
+
+
+        public SettingsViewModel()
+        {
+            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
+            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
+            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
+            if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
+            {
+                // Get the _settings for this application.
+                _settings = IsolatedStorageSettings.ApplicationSettings;
+            }
+        }
+
+        /// <summary>
+        /// Property to get and set language selection Setting Key.
+        /// </summary>
+        public int LanguageSelectionSetting
+        {
+            get
+            {
+                return GetValueOrDefault<int>(_languageSelectionSettingKeyName, _languageSelectionSettingDefault);
+            }
+            set
+            {
+                if (AddOrUpdateValue(_languageSelectionSettingKeyName, value))
+                {
+                    Save();
+                }
+                NotifyPropertyChanged(_languageSelectionSettingKeyName);
+            }
+        }
+
+        /// <summary>
+        /// Property to get and set temperature units selection Setting Key.
+        /// </summary>
+        public int TemperaruteUnitsSelectionSetting
+        {
+            get
+            {
+                return GetValueOrDefault<int>(_temperatureUnitsSelectionSettingKeyName, _temperatureUnitsSelectionSettingDefault);
+            }
+            set
+            {
+                if (AddOrUpdateValue(_temperatureUnitsSelectionSettingKeyName, value))
+                {
+                    Save();
+                }
+                NotifyPropertyChanged(_temperatureUnitsSelectionSettingKeyName);
+            }
+        }
+
+        /// <summary>
+        /// Property to get and set forecast day numbers selection Setting Key.
+        /// </summary>
+        public int ForecastDayNumbersSelectionSetting
+        {
+            get
+            {
+                return GetValueOrDefault<int>(_forecastDayNumbersSelectionSelectionSettingKeyName, _forecastDayNumbersSelectionSettingDefault);
+            }
+            set
+            {
+                if (AddOrUpdateValue(_forecastDayNumbersSelectionSelectionSettingKeyName, value))
+                {
+                    Save();
+                }
+                NotifyPropertyChanged(_forecastDayNumbersSelectionSelectionSettingKeyName);
+            }
+        }
+
+        /// <summary>
+        /// Get the current value of the setting, or if it is not found, set the 
+        /// setting to the default value.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="Key"></param>
+        /// <param name="defaultValue"></param>
+        /// <returns></returns>
+        private T GetValueOrDefault<T>(string Key, T defaultValue)
+        {
+            T value;
+
+            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
+            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
+            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
+            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
+            {
+                return defaultValue;
+            }
+
+            // If the key exists, retrieve the value.
+            if (_settings.Contains(Key))
+            {
+                value = (T)_settings[Key];
+            }
+            // Otherwise, use the default value.
+            else
+            {
+                value = defaultValue;
+            }
+            return value;
+        }
+
+        /// <summary>
+        /// Update a setting value for application. If the setting does not
+        /// exist, then add the setting.
+        /// </summary>
+        /// <param name="Key"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        private bool AddOrUpdateValue(string Key, Object value)
+        {
+            bool valueChanged = false;
+
+            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
+            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
+            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
+            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
+            {
+                return false;
+            }
+
+            // If the key exists
+            if (_settings.Contains(Key))
+            {
+                // If the value has changed
+                if (_settings[Key] != value)
+                {
+                    // Store the new value
+                    _settings[Key] = value;
+                    valueChanged = true;
+                }
+            }
+            // Otherwise create the key.
+            else
+            {
+                _settings.Add(Key, value);
+                valueChanged = true;
+            }
+            return valueChanged;
+        }
+
+        /// <summary>
+        /// Save the _settings.
+        /// </summary>
+        private void Save()
+        {
+            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
+            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
+            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
+            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
+            {
+                return;
+            }
+
+            _settings.Save();
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(string propertyName)
+        {
+            PropertyChangedEventHandler handler = PropertyChanged;
+            if (null != handler)
+            {
+                handler(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/WeatherInformation.csproj b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/WeatherInformation.csproj
new file mode 100644 (file)
index 0000000..820d1fe
--- /dev/null
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>WeatherInformation</RootNamespace>
+    <AssemblyName>WeatherInformation</AssemblyName>
+    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
+    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <SilverlightApplication>true</SilverlightApplication>
+    <SupportedCultures>es;qps-ploc</SupportedCultures>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>WeatherInformation_$(Configuration)_$(Platform).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>WeatherInformation.App</SilverlightAppEntry>
+    <ValidateXaml>true</ValidateXaml>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+    <ExpressionBlendVersion>12.0.50429.0</ExpressionBlendVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\ARM\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\ARM\Release</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Label="MultilingualAppToolkit">
+    <MultilingualAppToolkitVersion>3.0</MultilingualAppToolkitVersion>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="LocalizedStrings.cs" />
+    <Compile Include="MainPage.xaml.cs">
+      <DependentUpon>MainPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="MapPage.xaml.cs">
+      <DependentUpon>MapPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Model\CurrentWeatherParser\Clouds.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Coord.cs" />
+    <Compile Include="Model\CurrentWeatherParser\CurrentWeather.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Main.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Snow.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Rain.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Sys.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Weather.cs" />
+    <Compile Include="Model\CurrentWeatherParser\Wind.cs" />
+    <Compile Include="Model\ForecastWeatherParser\City.cs" />
+    <Compile Include="Model\ForecastWeatherParser\Coord.cs" />
+    <Compile Include="Model\ForecastWeatherParser\ForecastWeather.cs" />
+    <Compile Include="Model\ForecastWeatherParser\List.cs" />
+    <Compile Include="Model\ForecastWeatherParser\Temp.cs" />
+    <Compile Include="Model\ForecastWeatherParser\Weather.cs" />
+    <Compile Include="Model\Images\RemoteImagesTranslation.cs" />
+    <Compile Include="Model\JsonDataParser\JsonParser.cs" />
+    <Compile Include="Model\Location.cs" />
+    <Compile Include="Model\LocationDataContext.cs" />
+    <Compile Include="Model\WeatherData.cs" />
+    <Compile Include="Model\Services\CustomHTTPClient.cs" />
+    <Compile Include="Model\Services\ServiceParser.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="SelectedDatePage.xaml.cs">
+      <DependentUpon>SelectedDatePage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="SettingsPage.xaml.cs">
+      <DependentUpon>SettingsPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="ViewModels\ItemViewModel.cs" />
+    <Compile Include="ViewModels\MainViewModel.cs" />
+    <Compile Include="ViewModels\SelectedDateViewModel.cs" />
+    <Compile Include="ViewModels\SettingsViewModel.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </ApplicationDefinition>
+    <DesignData Include="SampleData\SelectedDateViewModelSampleData.xaml">
+      <Generator>MSBuild:MarkupCompilePass1</Generator>
+    </DesignData>
+    <Page Include="MainPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <DesignData Include="SampleData\MainViewModelSampleData.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </DesignData>
+    <Page Include="MapPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="SelectedDatePage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="SettingsPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\WMAppManifest.xml">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\AlignmentGrid.png" />
+    <Content Include="Assets\ApplicationIcon.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Assets\Tiles\IconicTileSmall.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Images\add.png" />
+    <Content Include="Images\feature.settings.png" />
+    <Content Include="Images\weather_clear.png" />
+    <Content Include="Images\weather_clear_night.png" />
+    <Content Include="Images\weather_few_clouds.png" />
+    <Content Include="Images\weather_few_clouds_night.png" />
+    <Content Include="Images\weather_fog.png" />
+    <Content Include="Images\weather_overcast.png" />
+    <Content Include="Images\weather_severe_alert.png" />
+    <Content Include="Images\weather_showers.png" />
+    <Content Include="Images\weather_showers_scattered.png" />
+    <Content Include="Images\weather_snow.png" />
+    <Content Include="Images\weather_storm.png" />
+    <Content Include="README_FIRST.txt" />
+    <Content Include="Toolkit.Content\ApplicationBar.Add.png" />
+    <Content Include="Toolkit.Content\ApplicationBar.Cancel.png" />
+    <Content Include="Toolkit.Content\ApplicationBar.Check.png" />
+    <Content Include="Toolkit.Content\ApplicationBar.Delete.png" />
+    <Content Include="Toolkit.Content\ApplicationBar.Select.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\AppResources.es.resx">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.es.xlf</DependentUpon>
+      <culture>es</culture>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Resources\AppResources.qps-ploc.resx">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.qps-ploc.xlf</DependentUpon>
+      <culture>qps-ploc</culture>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Resources\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Phone.Controls, Version=8.0.0.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e, processorArchitecture=MSIL" />
+    <Reference Include="Microsoft.Phone.Controls.Toolkit">
+      <HintPath>..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
+    </Reference>
+    <Reference Include="Newtonsoft.Json">
+      <HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Http">
+      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Http.Extensions">
+      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Http.Primitives">
+      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.Primitives.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <XliffResource Include="Resources\AppResources.es.xlf">
+      <Generator>XliffResxGenerator</Generator>
+      <LastGenOutput>AppResources.es.resx</LastGenOutput>
+    </XliffResource>
+    <XliffResource Include="Resources\AppResources.qps-ploc.xlf">
+      <Generator>XliffResxGenerator</Generator>
+      <LastGenOutput>AppResources.qps-ploc.resx</LastGenOutput>
+    </XliffResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.ResxResources.targets" Label="MultilingualAppToolkit" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions />
+  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
+  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
+    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
+    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
+  </Target>
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP8/WeatherInformation/WeatherInformation/packages.config b/WindowsPhone/WP8/WeatherInformation/WeatherInformation/packages.config
new file mode 100644 (file)
index 0000000..deb89d6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Microsoft.Bcl" version="1.1.9" targetFramework="wp80" />
+  <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="wp80" />
+  <package id="Microsoft.Net.Http" version="2.2.22" targetFramework="wp80" />
+  <package id="Newtonsoft.Json" version="6.0.3" targetFramework="wp80" />
+  <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
+</packages>
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test.sln b/WindowsPhone/WP81/WP81test/WP81test.sln
new file mode 100644 (file)
index 0000000..90b4443
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30501.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WP81test", "WP81test\WP81test.csproj", "{3BB4C1E0-BECD-42B4-8376-B09B55553CDE}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|ARM.ActiveCfg = Debug|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|ARM.Build.0 = Debug|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|ARM.Deploy.0 = Debug|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|x86.ActiveCfg = Debug|x86
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|x86.Build.0 = Debug|x86
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Debug|x86.Deploy.0 = Debug|x86
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|ARM.ActiveCfg = Release|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|ARM.Build.0 = Release|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|ARM.Deploy.0 = Release|ARM
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|x86.ActiveCfg = Release|x86
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|x86.Build.0 = Release|x86
+               {3BB4C1E0-BECD-42B4-8376-B09B55553CDE}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP81/WP81test/WP81test/App.xaml b/WindowsPhone/WP81/WP81test/WP81test/App.xaml
new file mode 100644 (file)
index 0000000..f0db122
--- /dev/null
@@ -0,0 +1,7 @@
+<Application
+    x:Class="WP81test.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WP81test">
+
+</Application>
diff --git a/WindowsPhone/WP81/WP81test/WP81test/App.xaml.cs b/WindowsPhone/WP81/WP81test/WP81test/App.xaml.cs
new file mode 100644 (file)
index 0000000..e842f40
--- /dev/null
@@ -0,0 +1,141 @@
+using WP81test.Common;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WP81test
+{
+    /// <summary>
+    /// Proporciona un comportamiento específico de la aplicación para complementar la clase Application predeterminada.
+    /// </summary>
+    public sealed partial class App : Application
+    {
+        private TransitionCollection transitions;
+
+        /// <summary>
+        /// Inicializa el objeto de aplicación Singleton. Esta es la primera línea de código creado
+        /// ejecutado y, como tal, es el equivalente lógico de main() o WinMain().
+        /// </summary>
+        public App()
+        {
+            this.InitializeComponent();
+            this.Suspending += this.OnSuspending;
+        }
+
+        /// <summary>
+        /// Se invoca cuando la aplicación la inicia normalmente el usuario final. Se usarán otros puntos
+        /// de entrada cuando la aplicación se inicie para abrir un archivo específico, para mostrar
+        /// resultados de la búsqueda, etc.
+        /// </summary>
+        /// <param name="e">Información detallada acerca de la solicitud y el proceso de inicio.</param>
+        protected override async void OnLaunched(LaunchActivatedEventArgs e)
+        {
+#if DEBUG
+            if (System.Diagnostics.Debugger.IsAttached)
+            {
+                this.DebugSettings.EnableFrameRateCounter = true;
+            }
+#endif
+
+            Frame rootFrame = Window.Current.Content as Frame;
+
+            // No repetir la inicialización de la aplicación si la ventana tiene contenido todavía,
+            // solo asegurarse de que la ventana está activa.
+            if (rootFrame == null)
+            {
+                // Crear un marco para que actúe como contexto de navegación y navegar a la primera página.
+                rootFrame = new Frame();
+
+                // Asociar el marco con una clave SuspensionManager.
+                SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
+
+                // TODO: Cambiar este valor a un tamaño de caché adecuado para la aplicación.
+                rootFrame.CacheSize = 1;
+
+                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
+                {
+                    // Restaurar el estado de sesión guardado solo si procede.
+                    try
+                    {
+                        await SuspensionManager.RestoreAsync();
+                    }
+                    catch (SuspensionManagerException)
+                    {
+                        // Se produjo un error al restaurar el estado.
+                        // Asumir que no hay estado y continuar.
+                    }
+                }
+
+                // Poner el marco en la ventana actual.
+                Window.Current.Content = rootFrame;
+            }
+
+            if (rootFrame.Content == null)
+            {
+                // Quita la navegación de transición en el inicio.
+                if (rootFrame.ContentTransitions != null)
+                {
+                    this.transitions = new TransitionCollection();
+                    foreach (var c in rootFrame.ContentTransitions)
+                    {
+                        this.transitions.Add(c);
+                    }
+                }
+
+                rootFrame.ContentTransitions = null;
+                rootFrame.Navigated += this.RootFrame_FirstNavigated;
+
+                // Cuando no se restaura la pila de navegación para navegar a la primera página,
+                // configurar la nueva página al pasar la información requerida como parámetro
+                // parámetro.
+                if (!rootFrame.Navigate(typeof(PivotPage), e.Arguments))
+                {
+                    throw new Exception("Failed to create initial page");
+                }
+            }
+
+            // Asegurarse de que la ventana actual está activa.
+            Window.Current.Activate();
+        }
+
+        /// <summary>
+        /// Restaura las transiciones de contenido después de iniciar la aplicación.
+        /// </summary>
+        private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)
+        {
+            var rootFrame = sender as Frame;
+            rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };
+            rootFrame.Navigated -= this.RootFrame_FirstNavigated;
+        }
+
+        /// <summary>
+        /// Se invoca al suspender la ejecución de la aplicación. El estado de la aplicación se guarda
+        /// sin saber si la aplicación se terminará o se reanudará con el contenido
+        /// de la memoria aún intacto.
+        /// </summary>
+        /// <param name="sender">Origen de la solicitud de suspensión.</param>
+        /// <param name="e">Detalles sobre la solicitud de suspensión.</param>
+        private async void OnSuspending(object sender, SuspendingEventArgs e)
+        {
+            var deferral = e.SuspendingOperation.GetDeferral();
+            await SuspensionManager.SaveAsync();
+            deferral.Complete();
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/Logo.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/Logo.scale-240.png
new file mode 100644 (file)
index 0000000..76921ca
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/Logo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/SmallLogo.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/SmallLogo.scale-240.png
new file mode 100644 (file)
index 0000000..3166301
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/SmallLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/SplashScreen.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/SplashScreen.scale-240.png
new file mode 100644 (file)
index 0000000..33f26b3
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/SplashScreen.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/Square71x71Logo.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/Square71x71Logo.scale-240.png
new file mode 100644 (file)
index 0000000..cfa54be
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/Square71x71Logo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/StoreLogo.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/StoreLogo.scale-240.png
new file mode 100644 (file)
index 0000000..47e084b
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/StoreLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Assets/WideLogo.scale-240.png b/WindowsPhone/WP81/WP81test/WP81test/Assets/WideLogo.scale-240.png
new file mode 100644 (file)
index 0000000..6249d29
Binary files /dev/null and b/WindowsPhone/WP81/WP81test/WP81test/Assets/WideLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Common/NavigationHelper.cs b/WindowsPhone/WP81/WP81test/WP81test/Common/NavigationHelper.cs
new file mode 100644 (file)
index 0000000..0185a31
--- /dev/null
@@ -0,0 +1,436 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using Windows.System;
+using Windows.UI.Core;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+
+namespace WP81test.Common
+{
+    /// <summary>
+    /// NavigationHelper es útil para la navegación entre páginas.  Proporciona comandos que se usan para 
+    /// navegar hacia atrás y hacia adelante, además de registros de los accesos directos 
+    /// de mouse y teclado estándar usados para retroceder y avanzar en Windows y el botón del hardware para retroceder en
+    /// Windows Phone. Además, integra SuspensionManager para controlar la administración del
+    /// estado y de la duración de los procesos al navegar entre páginas.
+    /// </summary>
+    /// <example>
+    /// Para usar NavigationHelper, realice los dos pasos siguientes o bien
+    /// empiece a usar BasicPage o cualquier otra plantilla de elemento de página distinta de BlankPage.
+    /// 
+    /// 1) Crear una instancia de NavigationHelper en algún lugar como 
+    ///     el constructor de la página y registrar una devolución de llamada para los eventos LoadState y 
+    ///     SaveState.
+    /// <code>
+    ///     public MyPage()
+    ///     {
+    ///         this.InitializeComponent();
+    ///         var navigationHelper = new NavigationHelper(this);
+    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;
+    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;
+    ///     }
+    ///     
+    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
+    ///     { }
+    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)
+    ///     { }
+    /// </code>
+    /// 
+    /// 2) Registrar la página para llamar a NavigationHelper siempre que la página participe 
+    ///     en la navegación invalidando los eventos <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedTo"/> 
+    ///     y <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedFrom"/>.
+    /// <code>
+    ///     protected override void OnNavigatedTo(NavigationEventArgs e)
+    ///     {
+    ///         navigationHelper.OnNavigatedTo(e);
+    ///     }
+    ///     
+    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)
+    ///     {
+    ///         navigationHelper.OnNavigatedFrom(e);
+    ///     }
+    /// </code>
+    /// </example>
+    [Windows.Foundation.Metadata.WebHostHidden]
+    public class NavigationHelper : DependencyObject
+    {
+        private Page Page { get; set; }
+        private Frame Frame { get { return this.Page.Frame; } }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="NavigationHelper"/>.
+        /// </summary>
+        /// <param name="page">Referencia a la página actual usada para la navegación.  
+        /// Esta referencia permite la manipulación de marcos y ayuda a garantizar que las solicitudes 
+        /// de navegación con el teclado solo se producen cuando la página ocupa la ventana completa.</param>
+        public NavigationHelper(Page page)
+        {
+            this.Page = page;
+
+            // Cuando esta página forma parte del árbol visual, realizar dos cambios:
+            // 1) Asignar el estado de vista de la aplicación a un estado visual para la página
+            // 2) Controlar las solicitudes de navegación del hardware
+            this.Page.Loaded += (sender, e) =>
+            {
+#if WINDOWS_PHONE_APP
+                Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+#else
+                // La navegación con el teclado y el mouse se aplica únicamente cuando se ocupa toda la ventana
+                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&
+                    this.Page.ActualWidth == Window.Current.Bounds.Width)
+                {
+                    // Escuchar a la ventana directamente de forma que el foco no es necesario
+                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
+                        CoreDispatcher_AcceleratorKeyActivated;
+                    Window.Current.CoreWindow.PointerPressed +=
+                        this.CoreWindow_PointerPressed;
+                }
+#endif
+            };
+
+            // Deshacer los cambios cuando la página ya no está visible
+            this.Page.Unloaded += (sender, e) =>
+            {
+#if WINDOWS_PHONE_APP
+                Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
+#else
+                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=
+                    CoreDispatcher_AcceleratorKeyActivated;
+                Window.Current.CoreWindow.PointerPressed -=
+                    this.CoreWindow_PointerPressed;
+#endif
+            };
+        }
+
+        #region Admitir navegación
+
+        RelayCommand _goBackCommand;
+        RelayCommand _goForwardCommand;
+
+        /// <summary>
+        /// <see cref="RelayCommand"/> usado para enlazar a la propiedad Command del botón Atrás
+        /// para navegar al elemento más reciente del historial de navegación hacia atrás, si un objeto Frame
+        /// administra su propio historial de navegación.
+        /// 
+        /// El objeto <see cref="RelayCommand"/> está configurado para usar el método virtual <see cref="GoBack"/>
+        /// como acción de ejecución y <see cref="CanGoBack"/> para CanExecute.
+        /// </summary>
+        public RelayCommand GoBackCommand
+        {
+            get
+            {
+                if (_goBackCommand == null)
+                {
+                    _goBackCommand = new RelayCommand(
+                        () => this.GoBack(),
+                        () => this.CanGoBack());
+                }
+                return _goBackCommand;
+            }
+            set
+            {
+                _goBackCommand = value;
+            }
+        }
+        /// <summary>
+        /// <see cref="RelayCommand"/> usado para navegar al elemento más reciente en 
+        /// el historial de navegación hacia delante, si un objeto Frame administra su propio historial de navegación.
+        /// 
+        /// El objeto <see cref="RelayCommand"/> está configurado para usar el método virtual <see cref="GoForward"/>
+        /// como acción de ejecución y <see cref="CanGoForward"/> para CanExecute.
+        /// </summary>
+        public RelayCommand GoForwardCommand
+        {
+            get
+            {
+                if (_goForwardCommand == null)
+                {
+                    _goForwardCommand = new RelayCommand(
+                        () => this.GoForward(),
+                        () => this.CanGoForward());
+                }
+                return _goForwardCommand;
+            }
+        }
+
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoBackCommand"/>
+        /// para determinar si el objeto <see cref="Frame"/> puede retroceder.
+        /// </summary>
+        /// <returns>
+        /// true si el objeto <see cref="Frame"/> tiene al menos una entrada 
+        /// en el historial de navegación hacia atrás.
+        /// </returns>
+        public virtual bool CanGoBack()
+        {
+            return this.Frame != null && this.Frame.CanGoBack;
+        }
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoForwardCommand"/>
+        /// para determinar si el objeto <see cref="Frame"/> puede avanzar.
+        /// </summary>
+        /// <returns>
+        /// true si el objeto <see cref="Frame"/> tiene al menos una entrada 
+        /// en el historial de navegación hacia delante.
+        /// </returns>
+        public virtual bool CanGoForward()
+        {
+            return this.Frame != null && this.Frame.CanGoForward;
+        }
+
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoBackCommand"/>
+        /// para invocar el método <see cref="Windows.UI.Xaml.Controls.Frame.GoBack"/>.
+        /// </summary>
+        public virtual void GoBack()
+        {
+            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();
+        }
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoForwardCommand"/>
+        /// para invocar el método <see cref="Windows.UI.Xaml.Controls.Frame.GoForward"/>.
+        /// </summary>
+        public virtual void GoForward()
+        {
+            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();
+        }
+
+#if WINDOWS_PHONE_APP
+        /// <summary>
+        /// Se invoca cuando se presiona el botón para retroceder del hardware. Solo para Windows Phone.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
+        {
+            if (this.GoBackCommand.CanExecute(null))
+            {
+                e.Handled = true;
+                this.GoBackCommand.Execute(null);
+            }
+        }
+#else
+        /// <summary>
+        /// Se invoca en cada pulsación de tecla, incluidas las teclas del sistema como combinaciones de teclas Alt, cuando
+        /// esta página está activa y ocupa toda la ventana.  Se usa para detectar la navegación con el teclado
+        /// entre páginas incluso cuando la página no tiene el foco.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
+            AcceleratorKeyEventArgs e)
+        {
+            var virtualKey = e.VirtualKey;
+
+            // Investigar más solo cuando se presionan las teclas Izquierda, Derecha o las teclas
+            // dedicadas Repág o Avpág
+            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
+                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
+                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
+                (int)virtualKey == 166 || (int)virtualKey == 167))
+            {
+                var coreWindow = Window.Current.CoreWindow;
+                var downState = CoreVirtualKeyStates.Down;
+                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
+                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
+                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
+                bool noModifiers = !menuKey && !controlKey && !shiftKey;
+                bool onlyAlt = menuKey && !controlKey && !shiftKey;
+
+                if (((int)virtualKey == 166 && noModifiers) ||
+                    (virtualKey == VirtualKey.Left && onlyAlt))
+                {
+                    // Cuando se presionan las teclas Repág o Alt+Izquierda, navegar hacia atrás
+                    e.Handled = true;
+                    this.GoBackCommand.Execute(null);
+                }
+                else if (((int)virtualKey == 167 && noModifiers) ||
+                    (virtualKey == VirtualKey.Right && onlyAlt))
+                {
+                    // Cuando se presionan las teclas Avpág o Alt+Derecha, navegar hacia delante
+                    e.Handled = true;
+                    this.GoForwardCommand.Execute(null);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Se invoca en cada clic del mouse, punteo en la pantalla táctil o una interacción equivalente cuando esta
+        /// página está activa y ocupa toda la ventana.  Se usa para detectar los clics de botón del mouse
+        /// siguiente y anterior del estilo del explorador para navegar entre páginas.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void CoreWindow_PointerPressed(CoreWindow sender,
+            PointerEventArgs e)
+        {
+            var properties = e.CurrentPoint.Properties;
+
+            // Omitir la presión simultánea de botones con los botones Izquierda, Derecha y Medio
+            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||
+                properties.IsMiddleButtonPressed) return;
+
+            // Si se presiona Repág o Avpág (pero no ambos), navegar adecuadamente
+            bool backPressed = properties.IsXButton1Pressed;
+            bool forwardPressed = properties.IsXButton2Pressed;
+            if (backPressed ^ forwardPressed)
+            {
+                e.Handled = true;
+                if (backPressed) this.GoBackCommand.Execute(null);
+                if (forwardPressed) this.GoForwardCommand.Execute(null);
+            }
+        }
+#endif
+
+        #endregion
+
+        #region Administración de la duración de los procesos
+
+        private String _pageKey;
+
+        /// <summary>
+        /// Registre este evento en la página actual para rellenar la página
+        /// con contenido pasado durante la navegación, así como cualquier estado
+        /// guardado proporcionado al recrear una página a partir de una sesión anterior.
+        /// </summary>
+        public event LoadStateEventHandler LoadState;
+        /// <summary>
+        /// Registre este evento en la página actual para mantener
+        /// el estado asociado a la página actual en caso de que
+        /// la aplicación se suspenda o la página se descarte de
+        /// la memoria caché de navegación.
+        /// </summary>
+        public event SaveStateEventHandler SaveState;
+
+        /// <summary>
+        /// Se invoca cuando esta página se va a mostrar en un objeto Frame.  
+        /// Este método llama a <see cref="LoadState"/>, donde debe incluirse
+        /// toda la lógica de navegación y administración de la duración de los procesos específica de la página.
+        /// </summary>
+        /// <param name="e">Datos de evento que describen cómo se llegó a esta página.  La propiedad Parameter
+        /// proporciona el grupo que se va a mostrar.</param>
+        public void OnNavigatedTo(NavigationEventArgs e)
+        {
+            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+            this._pageKey = "Page-" + this.Frame.BackStackDepth;
+
+            if (e.NavigationMode == NavigationMode.New)
+            {
+                // Borrar el estado existente para la navegación hacia delante cuando se agregue una nueva página a la
+                // pila de navegación
+                var nextPageKey = this._pageKey;
+                int nextPageIndex = this.Frame.BackStackDepth;
+                while (frameState.Remove(nextPageKey))
+                {
+                    nextPageIndex++;
+                    nextPageKey = "Page-" + nextPageIndex;
+                }
+
+                // Pasar el parámetro de navegación a la nueva página
+                if (this.LoadState != null)
+                {
+                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
+                }
+            }
+            else
+            {
+                // Pasar el parámetro de navegación y el estado de página mantenido a la página usando
+                // la misma estrategia para cargar el estado suspendido y volver a crear las páginas descartadas
+                // a partir de la memoria caché
+                if (this.LoadState != null)
+                {
+                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));
+                }
+            }
+        }
+
+        /// <summary>
+        /// Se invoca cuando esta página deja de estar visible en un marco.
+        /// Este método llama a <see cref="SaveState"/>, donde debe incluirse
+        /// toda la lógica de navegación y administración de la duración de los procesos específica de la página.
+        /// </summary>
+        /// <param name="e">Datos de evento que describen cómo se llegó a esta página.  La propiedad Parameter
+        /// proporciona el grupo que se va a mostrar.</param>
+        public void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+            var pageState = new Dictionary<String, Object>();
+            if (this.SaveState != null)
+            {
+                this.SaveState(this, new SaveStateEventArgs(pageState));
+            }
+            frameState[_pageKey] = pageState;
+        }
+
+        #endregion
+    }
+
+    /// <summary>
+    /// Representa el método que controlará el evento <see cref="NavigationHelper.LoadState"/>
+    /// </summary>
+    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);
+    /// <summary>
+    /// Representa el método que controlará el evento <see cref="NavigationHelper.SaveState"/>
+    /// </summary>
+    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);
+
+    /// <summary>
+    /// Clase usada para contener los datos de evento requeridos cuando una página intenta cargar el estado.
+    /// </summary>
+    public class LoadStateEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Valor de parámetro pasado a <see cref="Frame.Navigate(Type, Object)"/> 
+        /// cuando se solicitó inicialmente esta página.
+        /// </summary>
+        public Object NavigationParameter { get; private set; }
+        /// <summary>
+        /// Diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  Será null la primera vez que se visite una página.
+        /// </summary>
+        public Dictionary<string, Object> PageState { get; private set; }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="LoadStateEventArgs"/>.
+        /// </summary>
+        /// <param name="navigationParameter">
+        /// Valor de parámetro pasado a <see cref="Frame.Navigate(Type, Object)"/> 
+        /// cuando se solicitó inicialmente esta página.
+        /// </param>
+        /// <param name="pageState">
+        /// Diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  Será null la primera vez que se visite una página.
+        /// </param>
+        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)
+            : base()
+        {
+            this.NavigationParameter = navigationParameter;
+            this.PageState = pageState;
+        }
+    }
+    /// <summary>
+    /// Clase usada para contener los datos de evento requeridos cuando una página intenta guardar el estado.
+    /// </summary>
+    public class SaveStateEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Diccionario vacío para rellenar con un estado serializable.
+        /// </summary>
+        public Dictionary<string, Object> PageState { get; private set; }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="SaveStateEventArgs"/>.
+        /// </summary>
+        /// <param name="pageState">Diccionario vacío para rellenar con un estado serializable.</param>
+        public SaveStateEventArgs(Dictionary<string, Object> pageState)
+            : base()
+        {
+            this.PageState = pageState;
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Common/ObservableDictionary.cs b/WindowsPhone/WP81/WP81test/WP81test/Common/ObservableDictionary.cs
new file mode 100644 (file)
index 0000000..0a5a9bb
--- /dev/null
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Windows.Foundation.Collections;
+
+namespace WP81test.Common
+{
+    /// <summary>
+    /// Implementación de IObservableMap que admite volver a entrar para usar como
+    /// modelo de vista predeterminada.
+    /// </summary>
+    public class ObservableDictionary : IObservableMap<string, object>
+    {
+        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>
+        {
+            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)
+            {
+                this.CollectionChange = change;
+                this.Key = key;
+            }
+
+            public CollectionChange CollectionChange { get; private set; }
+            public string Key { get; private set; }
+        }
+
+        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
+        public event MapChangedEventHandler<string, object> MapChanged;
+
+        private void InvokeMapChanged(CollectionChange change, string key)
+        {
+            var eventHandler = MapChanged;
+            if (eventHandler != null)
+            {
+                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
+            }
+        }
+
+        public void Add(string key, object value)
+        {
+            this._dictionary.Add(key, value);
+            this.InvokeMapChanged(CollectionChange.ItemInserted, key);
+        }
+
+        public void Add(KeyValuePair<string, object> item)
+        {
+            this.Add(item.Key, item.Value);
+        }
+
+        public bool Remove(string key)
+        {
+            if (this._dictionary.Remove(key))
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+                return true;
+            }
+            return false;
+        }
+
+        public bool Remove(KeyValuePair<string, object> item)
+        {
+            object currentValue;
+            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&
+                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
+                return true;
+            }
+            return false;
+        }
+
+        public object this[string key]
+        {
+            get
+            {
+                return this._dictionary[key];
+            }
+            set
+            {
+                this._dictionary[key] = value;
+                this.InvokeMapChanged(CollectionChange.ItemChanged, key);
+            }
+        }
+
+        public void Clear()
+        {
+            var priorKeys = this._dictionary.Keys.ToArray();
+            this._dictionary.Clear();
+            foreach (var key in priorKeys)
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+            }
+        }
+
+        public ICollection<string> Keys
+        {
+            get { return this._dictionary.Keys; }
+        }
+
+        public bool ContainsKey(string key)
+        {
+            return this._dictionary.ContainsKey(key);
+        }
+
+        public bool TryGetValue(string key, out object value)
+        {
+            return this._dictionary.TryGetValue(key, out value);
+        }
+
+        public ICollection<object> Values
+        {
+            get { return this._dictionary.Values; }
+        }
+
+        public bool Contains(KeyValuePair<string, object> item)
+        {
+            return this._dictionary.Contains(item);
+        }
+
+        public int Count
+        {
+            get { return this._dictionary.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return false; }
+        }
+
+        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
+        {
+            return this._dictionary.GetEnumerator();
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return this._dictionary.GetEnumerator();
+        }
+
+        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
+        {
+            int arraySize = array.Length;
+            foreach (var pair in this._dictionary)
+            {
+                if (arrayIndex >= arraySize) break;
+                array[arrayIndex++] = pair;
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Common/ReadMe.txt b/WindowsPhone/WP81/WP81test/WP81test/Common/ReadMe.txt
new file mode 100644 (file)
index 0000000..b532644
--- /dev/null
@@ -0,0 +1,10 @@
+El directorio Common contiene clases que simplifican el desarrollo de 
+aplicaciones. 
+
+Las clases del directorio Common forman parte del proyecto y se pueden mejorar 
+para satisfacer sus necesidades. Se debe tener cuidado al modificar los métodos 
+y las propiedades existentes, ya que los cambios no compatibles requerirán 
+cambios correspondientes en el código incluido en diversas plantillas de Visual 
+Studio. Por ejemplo, las páginas adicionales agregadas al proyecto se escriben 
+suponiendo que los métodos y propiedades originales de las clases Common siguen 
+presentes y que los nombres de los tipos no han cambiado. 
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Common/RelayCommand.cs b/WindowsPhone/WP81/WP81test/WP81test/Common/RelayCommand.cs
new file mode 100644 (file)
index 0000000..04f6f7d
--- /dev/null
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+
+namespace WP81test.Common
+{
+    /// <summary>
+    /// Comando cuyo único fin es transmitir su funcionalidad 
+    /// a otros objetos mediante la invocación de delegados. 
+    /// El valor devuelto predeterminado para el método CanExecute es 'true'.
+    /// <see cref="RaiseCanExecuteChanged"/> debe llamarse siempre
+    /// Se espera que <see cref="CanExecute"/> devuelva un valor distinto.
+    /// </summary>
+    public class RelayCommand : ICommand
+    {
+        private readonly Action _execute;
+        private readonly Func<bool> _canExecute;
+
+        /// <summary>
+        /// Se desencadena al llamar a RaiseCanExecuteChanged.
+        /// </summary>
+        public event EventHandler CanExecuteChanged;
+
+        /// <summary>
+        /// Crea un nuevo comando que puede ejecutarse siempre.
+        /// </summary>
+        /// <param name="execute">Lógica de ejecución.</param>
+        public RelayCommand(Action execute)
+            : this(execute, null)
+        {
+        }
+
+        /// <summary>
+        /// Crea un nuevo comando.
+        /// </summary>
+        /// <param name="execute">Lógica de ejecución.</param>
+        /// <param name="canExecute">Lógica de estado de ejecución.</param>
+        public RelayCommand(Action execute, Func<bool> canExecute)
+        {
+            if (execute == null)
+                throw new ArgumentNullException("execute");
+            _execute = execute;
+            _canExecute = canExecute;
+        }
+
+        /// <summary>
+        /// Determina si <see cref="RelayCommand"/> puede ejecutarse en su estado actual.
+        /// </summary>
+        /// <param name="parameter">
+        /// Datos usados por el comando. Si el comando no requiere que se pasen datos, este objeto puede establecerse en null.
+        /// </param>
+        /// <returns>true si se puede ejecutar este comando; en caso contrario, false.</returns>
+        public bool CanExecute(object parameter)
+        {
+            return _canExecute == null ? true : _canExecute();
+        }
+
+        /// <summary>
+        /// Ejecuta <see cref="RelayCommand"/> en el destino del comando actual.
+        /// </summary>
+        /// <param name="parameter">
+        /// Datos usados por el comando. Si el comando no requiere que se pasen datos, este objeto puede establecerse en null.
+        /// </param>
+        public void Execute(object parameter)
+        {
+            _execute();
+        }
+
+        /// <summary>
+        /// Método usado para generar el evento <see cref="CanExecuteChanged"/>
+        /// para indicar que el valor devuelto de <see cref="CanExecute"/>
+        /// ha cambiado.
+        /// </summary>
+        public void RaiseCanExecuteChanged()
+        {
+            var handler = CanExecuteChanged;
+            if (handler != null)
+            {
+                handler(this, EventArgs.Empty);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Common/SuspensionManager.cs b/WindowsPhone/WP81/WP81test/WP81test/Common/SuspensionManager.cs
new file mode 100644 (file)
index 0000000..012cae0
--- /dev/null
@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.ApplicationModel;
+using Windows.Storage;
+using Windows.Storage.Streams;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace WP81test.Common
+{
+    /// <summary>
+    /// SuspensionManager captura el estado de sesión global para simplificar la administración de la duración de los procesos
+    /// de una aplicación.  Tenga en cuenta que el estado de la sesión se borrará automáticamente bajo diversas
+    /// condiciones y solamente debería usarse para almacenar información que sería conveniente
+    /// para el tema, pero se debe descartar cuando la aplicación se bloquea o se
+    /// actualiza.
+    /// </summary>
+    internal sealed class SuspensionManager
+    {
+        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();
+        private static List<Type> _knownTypes = new List<Type>();
+        private const string sessionStateFilename = "_sessionState.xml";
+
+        /// <summary>
+        /// Proporciona acceso al estado de sesión global para la sesión actual.  Este estado
+        /// se serializa mediante <see cref="SaveAsync"/> y se restaura con
+        /// <see cref="RestoreAsync"/>, por lo que los valores deben poder serializarse mediante
+        /// <see cref="DataContractSerializer"/> y ser tan compactos como sea posible.  Se recomienda el uso
+        /// de cadenas y otros tipos de datos independientes.
+        /// </summary>
+        public static Dictionary<string, object> SessionState
+        {
+            get { return _sessionState; }
+        }
+
+        /// <summary>
+        /// Lista de tipos personalizados proporcionados a <see cref="DataContractSerializer"/> al
+        /// leer y escribir el estado de la sesión.  Pueden agregarse tipos adicionales, inicialmente
+        /// vacíos, para personalizar el proceso de serialización.
+        /// </summary>
+        public static List<Type> KnownTypes
+        {
+            get { return _knownTypes; }
+        }
+
+        /// <summary>
+        /// Guardar el <see cref="SessionState"/> actual.  Toda instancia de <see cref="Frame"/>
+        /// registrada en <see cref="RegisterFrame"/> también conservará la
+        /// pila de navegación actual que, a su vez, ofrece a la <see cref="Page"/> activa la oportunidad
+        /// de guardar su estado.
+        /// </summary>
+        /// <returns>Tarea asincrónica que refleja cuándo se ha guardado el estado de la sesión.</returns>
+        public static async Task SaveAsync()
+        {
+            try
+            {
+                // Guardar el estado de navegación para todos los marcos registrados
+                foreach (var weakFrameReference in _registeredFrames)
+                {
+                    Frame frame;
+                    if (weakFrameReference.TryGetTarget(out frame))
+                    {
+                        SaveFrameNavigationState(frame);
+                    }
+                }
+
+                // Serializar el estado de la sesión de forma sincrónica para impedir el acceso asincrónico al estado
+                // compartido
+                MemoryStream sessionData = new MemoryStream();
+                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+                serializer.WriteObject(sessionData, _sessionState);
+
+                // Obtener un flujo de salida para el archivo SessionState y escribir el estado de forma asincrónica
+                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);
+                using (Stream fileStream = await file.OpenStreamForWriteAsync())
+                {
+                    sessionData.Seek(0, SeekOrigin.Begin);
+                    await sessionData.CopyToAsync(fileStream);
+                }
+            }
+            catch (Exception e)
+            {
+                throw new SuspensionManagerException(e);
+            }
+        }
+
+        /// <summary>
+        /// Restaura el <see cref="SessionState"/> previamente guardado.  Toda instancia de <see cref="Frame"/>
+        /// registrada en <see cref="RegisterFrame"/> también restaurará su estado de navegación
+        /// anterior lo que, a su vez, ofrece a su <see cref="Page"/> activa la oportunidad de restaurar su
+        /// estado.
+        /// </summary>
+        /// <param name="sessionBaseKey">Clave opcional que identifica el tipo de sesión.
+        /// Se puede usar para distinguir entre varios escenarios de inicio de aplicaciones.</param>
+        /// <returns>Tarea asincrónica que refleja cuándo se ha leído el estado de la sesión.  No hay
+        /// que confiar en el contenido de <see cref="SessionState"/>hasta que no se complete
+        /// esta tarea.</returns>
+        public static async Task RestoreAsync(String sessionBaseKey = null)
+        {
+            _sessionState = new Dictionary<String, Object>();
+
+            try
+            {
+                // Obtener el flujo de entrada para el archivo SessionState
+                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);
+                using (IInputStream inStream = await file.OpenSequentialReadAsync())
+                {
+                    // Deserializar el estado de sesión
+                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());
+                }
+
+                // Restaurar los marcos registrados a su estado guardado
+                foreach (var weakFrameReference in _registeredFrames)
+                {
+                    Frame frame;
+                    if (weakFrameReference.TryGetTarget(out frame) && (string)frame.GetValue(FrameSessionBaseKeyProperty) == sessionBaseKey)
+                    {
+                        frame.ClearValue(FrameSessionStateProperty);
+                        RestoreFrameNavigationState(frame);
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                throw new SuspensionManagerException(e);
+            }
+        }
+
+        private static DependencyProperty FrameSessionStateKeyProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionStateKey", typeof(String), typeof(SuspensionManager), null);
+        private static DependencyProperty FrameSessionBaseKeyProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionBaseKeyParams", typeof(String), typeof(SuspensionManager), null);
+        private static DependencyProperty FrameSessionStateProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionState", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);
+        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();
+
+        /// <summary>
+        /// Registra una instancia de <see cref="Frame"/> para permitir que su historial de navegación se guarde
+        /// y restaure desde <see cref="SessionState"/>.  Los marcos deben registrarse una vez
+        /// inmediatamente tras su creación si van a participar en la administración del estado de sesión.  Tras el
+        /// registro, si el estado ya se ha restaurado para la clave especificada,
+        /// se restaurará inmediatamente el historial de navegación.  Las invocaciones subsiguientes de
+        /// <see cref="RestoreAsync"/> también restaurarán el historial de navegación.
+        /// </summary>
+        /// <param name="frame">Instancia cuyo historial de navegación debería administrarse mediante
+        /// <see cref="SuspensionManager"/></param>
+        /// <param name="sessionStateKey">Clave única de <see cref="SessionState"/> que se usa para
+        /// almacenar información relacionada con la navegación.</param>
+        /// <param name="sessionBaseKey">Clave opcional que identifica el tipo de sesión.
+        /// Se puede usar para distinguir entre varios escenarios de inicio de aplicaciones.</param>
+        public static void RegisterFrame(Frame frame, String sessionStateKey, String sessionBaseKey = null)
+        {
+            if (frame.GetValue(FrameSessionStateKeyProperty) != null)
+            {
+                throw new InvalidOperationException("Frames can only be registered to one session state key");
+            }
+
+            if (frame.GetValue(FrameSessionStateProperty) != null)
+            {
+                throw new InvalidOperationException("Frames must be either be registered before accessing frame session state, or not registered at all");
+            }
+
+            if (!string.IsNullOrEmpty(sessionBaseKey))
+            {
+                frame.SetValue(FrameSessionBaseKeyProperty, sessionBaseKey);
+                sessionStateKey = sessionBaseKey + "_" + sessionStateKey;
+            }
+
+            // Usar una propiedad de dependencia para asociar la clave de sesión a un marco y mantener una lista de marcos cuyo
+            // estado de navegación deba administrarse
+            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);
+            _registeredFrames.Add(new WeakReference<Frame>(frame));
+
+            // Comprobar si el estado de navegación puede restaurarse
+            RestoreFrameNavigationState(frame);
+        }
+
+        /// <summary>
+        /// Desasocia un <see cref="Frame"/> previamente registrado mediante <see cref="RegisterFrame"/>
+        /// de <see cref="SessionState"/>.  Todo estado de navegación previamente capturado se
+        /// quitará.
+        /// </summary>
+        /// <param name="frame">Instancia cuyo historial de navegación debería dejar de ser
+        /// administrado.</param>
+        public static void UnregisterFrame(Frame frame)
+        {
+            // Quitar estado de la sesión y quitar el marco de la lista de marcos cuyo estado
+            // de navegación se guardará (junto con cualquier referencia débil que haya dejado de estar accesible)
+            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));
+            _registeredFrames.RemoveAll((weakFrameReference) =>
+            {
+                Frame testFrame;
+                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;
+            });
+        }
+
+        /// <summary>
+        /// Proporciona almacenamiento para el estado de sesión asociado al <see cref="Frame"/> especificado.
+        /// El estado de sesión de los marcos registrados previamente en <see cref="RegisterFrame"/>
+        /// se guardó y restauró automáticamente como parte del
+        /// <see cref="SessionState"/> global.  Los marcos no registrados tienen un estado transitorio
+        /// que puede ser útil al restaurar páginas descartadas de la
+        /// memoria caché de navegación.
+        /// </summary>
+        /// <remarks>Las aplicaciones pueden elegir basarse en <see cref="NavigationHelper"/> para administrar
+        /// el estado específico de página en lugar de trabajar directamente con el estado de sesión del marco.</remarks>
+        /// <param name="frame">Instancia para la que se desea obtener el estado de sesión.</param>
+        /// <returns>Colección de estados sujeta al mismo mecanismo de serialización que
+        /// <see cref="SessionState"/>.</returns>
+        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)
+        {
+            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);
+
+            if (frameState == null)
+            {
+                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);
+                if (frameSessionKey != null)
+                {
+                    // Los marcos registrados reflejan el estado de sesión correspondiente
+                    if (!_sessionState.ContainsKey(frameSessionKey))
+                    {
+                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();
+                    }
+                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];
+                }
+                else
+                {
+                    // Los marcos no registrados tienen un estado transitorio
+                    frameState = new Dictionary<String, Object>();
+                }
+                frame.SetValue(FrameSessionStateProperty, frameState);
+            }
+            return frameState;
+        }
+
+        private static void RestoreFrameNavigationState(Frame frame)
+        {
+            var frameState = SessionStateForFrame(frame);
+            if (frameState.ContainsKey("Navigation"))
+            {
+                frame.SetNavigationState((String)frameState["Navigation"]);
+            }
+        }
+
+        private static void SaveFrameNavigationState(Frame frame)
+        {
+            var frameState = SessionStateForFrame(frame);
+            frameState["Navigation"] = frame.GetNavigationState();
+        }
+    }
+    public class SuspensionManagerException : Exception
+    {
+        public SuspensionManagerException()
+        {
+        }
+
+        public SuspensionManagerException(Exception e)
+            : base("SuspensionManager failed", e)
+        {
+
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleData.json b/WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleData.json
new file mode 100644 (file)
index 0000000..673f22e
--- /dev/null
@@ -0,0 +1,327 @@
+{"Groups":[
+  {
+    "UniqueId": "Group-1",
+    "Title": "Group Title: 1",
+    "Subtitle": "Group subtitle: 1",
+    "ImagePath": "Assets/DarkGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-1-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-2",
+    "Title": "Group Title: 2",
+    "Subtitle": "Group subtitle: 2",
+    "ImagePath": "Assets/LightGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-2-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-2-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-2-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-3",
+    "Title": "Group Title: 3",
+    "Subtitle": "Group subtitle: 3",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-3-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-7",
+        "Title": "Item Title: 7",
+        "Subtitle": "Item Subtitle: 7",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-4",
+    "Title": "Group Title: 4",
+    "Subtitle": "Group subtitle: 4",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-4-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-5",
+    "Title": "Group Title: 5",
+    "Subtitle": "Group subtitle: 5",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-5-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-6",
+    "Title": "Group Title: 6",
+    "Subtitle": "Group subtitle: 6",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-6-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-7",
+        "Title": "Item Title: 7",
+        "Subtitle": "Item Subtitle: 7",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-8",
+        "Title": "Item Title: 8",
+        "Subtitle": "Item Subtitle: 8",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  }
+]
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleDataSource.cs b/WindowsPhone/WP81/WP81test/WP81test/DataModel/SampleDataSource.cs
new file mode 100644 (file)
index 0000000..cd76027
--- /dev/null
@@ -0,0 +1,153 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using Windows.Data.Json;
+using Windows.Storage;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Imaging;
+
+// El modelo de datos definido por este archivo sirve como ejemplo representativo de un modelo
+// modelo de vista predeterminada.  Los nombres de propiedad elegidos coinciden con enlaces de datos en las plantillas de elemento estándar.
+//
+// Las aplicaciones pueden usar este modelo como punto de inicio y ampliarlo o descartarlo completamente
+// y reemplazarlo por algo adecuado a sus necesidades. Si usa este modelo, puede mejorar la capacidad de respuesta 
+// de la aplicación iniciando la tarea de carga de datos en el código subyacente de App.xaml cuando la aplicación 
+// se inicia por primera vez.
+
+namespace WP81test.Data
+{
+    /// <summary>
+    /// Modelo de datos de elemento genérico.
+    /// </summary>
+    public class SampleDataItem
+    {
+        public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, String description, String content)
+        {
+            this.UniqueId = uniqueId;
+            this.Title = title;
+            this.Subtitle = subtitle;
+            this.Description = description;
+            this.ImagePath = imagePath;
+            this.Content = content;
+        }
+
+        public string UniqueId { get; private set; }
+        public string Title { get; private set; }
+        public string Subtitle { get; private set; }
+        public string Description { get; private set; }
+        public string ImagePath { get; private set; }
+        public string Content { get; private set; }
+
+        public override string ToString()
+        {
+            return this.Title;
+        }
+    }
+
+    /// <summary>
+    /// Modelo de datos de grupo genérico.
+    /// </summary>
+    public class SampleDataGroup
+    {
+        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)
+        {
+            this.UniqueId = uniqueId;
+            this.Title = title;
+            this.Subtitle = subtitle;
+            this.Description = description;
+            this.ImagePath = imagePath;
+            this.Items = new ObservableCollection<SampleDataItem>();
+        }
+
+        public string UniqueId { get; private set; }
+        public string Title { get; private set; }
+        public string Subtitle { get; private set; }
+        public string Description { get; private set; }
+        public string ImagePath { get; private set; }
+        public ObservableCollection<SampleDataItem> Items { get; private set; }
+
+        public override string ToString()
+        {
+            return this.Title;
+        }
+    }
+
+    /// <summary>
+    /// Crea una colección de grupos y elementos con contenido leído de un archivo json estático.
+    /// 
+    /// SampleDataSource se inicializa con los datos leídos de un archivo json estático incluido en 
+    /// el proyecto.  Esto proporciona datos de muestra tanto en el momento del diseño como en el de la ejecución.
+    /// </summary>
+    public sealed class SampleDataSource
+    {
+        private static SampleDataSource _sampleDataSource = new SampleDataSource();
+
+        private ObservableCollection<SampleDataGroup> _groups = new ObservableCollection<SampleDataGroup>();
+        public ObservableCollection<SampleDataGroup> Groups
+        {
+            get { return this._groups; }
+        }
+
+        public static async Task<IEnumerable<SampleDataGroup>> GetGroupsAsync()
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+
+            return _sampleDataSource.Groups;
+        }
+
+        public static async Task<SampleDataGroup> GetGroupAsync(string uniqueId)
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+            // La búsqueda lineal sencilla es aceptable para conjuntos de datos reducidos
+            var matches = _sampleDataSource.Groups.Where((group) => group.UniqueId.Equals(uniqueId));
+            if (matches.Count() == 1) return matches.First();
+            return null;
+        }
+
+        public static async Task<SampleDataItem> GetItemAsync(string uniqueId)
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+            // La búsqueda lineal sencilla es aceptable para conjuntos de datos reducidos
+            var matches = _sampleDataSource.Groups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));
+            if (matches.Count() == 1) return matches.First();
+            return null;
+        }
+
+        private async Task GetSampleDataAsync()
+        {
+            if (this._groups.Count != 0)
+                return;
+
+            Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");
+
+            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
+            string jsonText = await FileIO.ReadTextAsync(file);
+            JsonObject jsonObject = JsonObject.Parse(jsonText);
+            JsonArray jsonArray = jsonObject["Groups"].GetArray();
+
+            foreach (JsonValue groupValue in jsonArray)
+            {
+                JsonObject groupObject = groupValue.GetObject();
+                SampleDataGroup group = new SampleDataGroup(groupObject["UniqueId"].GetString(),
+                                                            groupObject["Title"].GetString(),
+                                                            groupObject["Subtitle"].GetString(),
+                                                            groupObject["ImagePath"].GetString(),
+                                                            groupObject["Description"].GetString());
+
+                foreach (JsonValue itemValue in groupObject["Items"].GetArray())
+                {
+                    JsonObject itemObject = itemValue.GetObject();
+                    group.Items.Add(new SampleDataItem(itemObject["UniqueId"].GetString(),
+                                                       itemObject["Title"].GetString(),
+                                                       itemObject["Subtitle"].GetString(),
+                                                       itemObject["ImagePath"].GetString(),
+                                                       itemObject["Description"].GetString(),
+                                                       itemObject["Content"].GetString()));
+                }
+                this.Groups.Add(group);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml b/WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml
new file mode 100644 (file)
index 0000000..6b758ad
--- /dev/null
@@ -0,0 +1,48 @@
+<Page
+    x:Class="WP81test.ItemPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WP81test"
+    xmlns:data="using:WP81test.Data"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}"
+    d:DataContext="{Binding Groups[0].Items[0], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}"
+    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+    <Page.Transitions>
+        <TransitionCollection>
+            <NavigationThemeTransition>
+                <NavigationThemeTransition.DefaultNavigationTransitionInfo>
+                    <ContinuumNavigationTransitionInfo/>
+                </NavigationThemeTransition.DefaultNavigationTransitionInfo>
+            </NavigationThemeTransition>
+        </TransitionCollection>
+    </Page.Transitions>
+
+    <Grid x:Name="LayoutRoot">
+        <Grid.ChildrenTransitions>
+            <TransitionCollection>
+                <EntranceThemeTransition/>
+            </TransitionCollection>
+        </Grid.ChildrenTransitions>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- Panel de título -->
+        <StackPanel Grid.Row="0" Margin="19,0,0,0">
+            <TextBlock x:Uid="Header" Text="MY APPLICATION" Style="{ThemeResource TitleTextBlockStyle}" Margin="0,12,0,0"/>
+            <TextBlock Text="{Binding Title}" Style="{ThemeResource HeaderTextBlockStyle}" Margin="0,-6.5,0,26.5" CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}" />
+        </StackPanel>
+
+        <!-- 
+            TODO: Debe colocarse el contenido en la siguiente cuadrícula 
+                  para mostrar detalles del elemento actual
+        -->
+        <Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
+
+        </Grid>
+    </Grid>
+</Page>
diff --git a/WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml.cs b/WindowsPhone/WP81/WP81test/WP81test/ItemPage.xaml.cs
new file mode 100644 (file)
index 0000000..6e66670
--- /dev/null
@@ -0,0 +1,116 @@
+using WP81test.Common;
+using WP81test.Data;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using System.Windows.Input;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WP81test
+{
+    /// <summary>
+    /// Página en la que se muestran los detalles de un único elemento contenido en un grupo.
+    /// </summary>
+    public sealed partial class ItemPage : Page
+    {
+        private readonly NavigationHelper navigationHelper;
+        private readonly ObservableDictionary defaultViewModel = new ObservableDictionary();
+
+        public ItemPage()
+        {
+            this.InitializeComponent();
+
+            this.navigationHelper = new NavigationHelper(this);
+            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
+            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
+        } 
+
+        /// <summary>
+        /// Obtiene el <see cref="NavigationHelper"/> asociado a esta <see cref="Page"/>.
+        /// </summary>
+        public NavigationHelper NavigationHelper
+        {
+            get { return this.navigationHelper; }
+        }
+
+        /// <summary>
+        /// Obtiene el modelo de vista para esta <see cref="Page"/>.
+        /// Este puede cambiarse a un modelo de vista fuertemente tipada.
+        /// </summary>
+        public ObservableDictionary DefaultViewModel
+        {
+            get { return this.defaultViewModel; }
+        }
+
+        /// <summary>
+        /// Rellena la página con el contenido pasado durante la navegación. Cualquier estado guardado se
+        /// proporciona también al crear de nuevo una página a partir de una sesión anterior.
+        /// </summary>
+        /// <param name="sender">
+        /// El origen del evento; suele ser <see cref="NavigationHelper"/>.
+        /// </param>
+        /// <param name="e">Datos de evento que proporcionan tanto el parámetro de navegación pasado a
+        /// <see cref="Frame.Navigate(Type, Object)"/> cuando se solicitó inicialmente esta página y
+        /// un diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  El estado será null la primera vez que se visite una página.</param>
+        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
+        {
+            // TODO: Crear un modelo de datos adecuado para el dominio del problema para reemplazar los datos de ejemplo.
+            var item = await SampleDataSource.GetItemAsync((string)e.NavigationParameter);
+            this.DefaultViewModel["Item"] = item;
+        }
+
+        /// <summary>
+        /// Mantiene el estado asociado con esta página en caso de que se suspenda la aplicación o
+        /// se descarte la página de la memoria caché de navegación.  Los valores deben cumplir los requisitos
+        /// de serialización de <see cref="SuspensionManager.SessionState"/>.
+        /// </summary>
+        /// <param name="sender">El origen del evento; suele ser <see cref="NavigationHelper"/>.</param>
+        /// <param name="e">Datos de evento que proporcionan un diccionario vacío para rellenar con
+        /// un estado serializable.</param>
+        private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
+        {
+            // TODO: Guardar aquí el estado único de la página.
+        }
+
+        #region Registro de NavigationHelper
+
+        /// <summary>
+        /// Los métodos proporcionados en esta sección se usan simplemente para permitir
+        /// que NavigationHelper responda a los métodos de navegación de la página.
+        /// <para>
+        /// Debe incluirse lógica específica de página en los controladores de eventos para  
+        /// <see cref="NavigationHelper.LoadState"/>
+        /// y <see cref="NavigationHelper.SaveState"/>.
+        /// El parámetro de navegación está disponible en el método LoadState 
+        /// junto con el estado de página mantenido durante una sesión anterior.
+        /// </para>
+        /// </summary>
+        /// <param name="e">Proporciona los datos para el evento y los métodos de navegación
+        /// controladores que no pueden cancelar la solicitud de navegación.</param>
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedTo(e);
+        }
+
+        protected override void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedFrom(e);
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Package.appxmanifest b/WindowsPhone/WP81/WP81test/WP81test/Package.appxmanifest
new file mode 100644 (file)
index 0000000..ab82a24
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
+
+  <Identity Name="e2a72db0-e511-48f5-ac9e-182a615b83e4"
+            Publisher="CN=Gustavo"
+            Version="1.0.0.0" />
+
+  <mp:PhoneIdentity PhoneProductId="e2a72db0-e511-48f5-ac9e-182a615b83e4" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
+
+  <Properties>
+    <DisplayName>WP81test</DisplayName>
+    <PublisherDisplayName>Gustavo</PublisherDisplayName>
+    <Logo>Assets\StoreLogo.png</Logo>
+  </Properties>
+
+  <Prerequisites>
+    <OSMinVersion>6.3.1</OSMinVersion>
+    <OSMaxVersionTested>6.3.1</OSMaxVersionTested>
+  </Prerequisites>
+  
+  <Resources>
+    <Resource Language="x-generate"/>
+  </Resources>
+
+  <Applications>
+    <Application Id="App"
+        Executable="$targetnametoken$.exe"
+        EntryPoint="WP81test.App">
+        <m3:VisualElements
+            DisplayName="WP81test"
+            Square150x150Logo="Assets\Logo.png"
+            Square44x44Logo="Assets\SmallLogo.png"
+            Description="WP81test"
+            ForegroundText="light"
+            BackgroundColor="transparent">
+            <m3:DefaultTile Wide310x150Logo="Assets\WideLogo.png" Square71x71Logo="Assets\Square71x71Logo.png"/>
+            <m3:SplashScreen Image="Assets\SplashScreen.png"/>
+        </m3:VisualElements>
+    </Application>
+  </Applications>
+  <Capabilities>
+    <Capability Name="internetClientServer" />
+  </Capabilities>
+</Package>
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml b/WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml
new file mode 100644 (file)
index 0000000..11b7b43
--- /dev/null
@@ -0,0 +1,105 @@
+<Page
+    x:Class="WP81test.PivotPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WP81test"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:data="using:WP81test.Data"
+    mc:Ignorable="d"
+    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
+    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+    <Page.Transitions>
+        <TransitionCollection>
+            <NavigationThemeTransition>
+                <NavigationThemeTransition.DefaultNavigationTransitionInfo>
+                    <CommonNavigationTransitionInfo IsStaggeringEnabled="True"/>
+                </NavigationThemeTransition.DefaultNavigationTransitionInfo>
+            </NavigationThemeTransition>
+        </TransitionCollection>
+    </Page.Transitions>
+
+    <Grid>
+        <Pivot x:Uid="Pivot" Title="MY APPLICATION" x:Name="pivot" CommonNavigationTransitionInfo.IsStaggerElement="True">
+            <!--Elemento Pivot uno-->
+            <PivotItem
+                x:Uid="PivotItem1"
+                Margin="19,14.5,0,0"
+                Header="first"
+                DataContext="{Binding FirstGroup}"
+                d:DataContext="{Binding Groups[0], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}"
+                CommonNavigationTransitionInfo.IsStaggerElement="True">
+                <!--Lista de líneas dobles con ajuste de texto-->
+                <ListView
+                    ItemsSource="{Binding Items}"
+                    IsItemClickEnabled="True"
+                    ItemClick="ItemView_ItemClick"
+                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
+                    <ListView.ItemTemplate>
+                        <DataTemplate>
+                            <StackPanel Margin="0,0,0,9.5">
+                                <TextBlock
+                                    Text="{Binding Title}"
+                                    TextWrapping="Wrap"
+                                    Pivot.SlideInAnimationGroup="1"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{ThemeResource ListViewItemTextBlockStyle}"
+                                    Margin="0,0,19,0"/>
+                                <TextBlock
+                                    Text="{Binding Description}"
+                                    TextWrapping="WrapWholeWords"
+                                    Pivot.SlideInAnimationGroup="2" 
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True" 
+                                    Style="{ThemeResource ListViewItemContentTextBlockStyle}"
+                                    Margin="0,0,19,0"/>
+                            </StackPanel>
+                        </DataTemplate>
+                    </ListView.ItemTemplate>
+                </ListView>
+            </PivotItem>
+
+            <!--Elemento Pivot dos-->
+            <PivotItem
+                x:Uid="PivotItem2"
+                Margin="19,14.5,0,0"
+                Header="second"
+                DataContext="{Binding SecondGroup}"
+                d:DataContext="{Binding Groups[1], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}">
+                <!--Lista de líneas dobles sin ajuste de texto-->
+                <ListView
+                    ItemsSource="{Binding Items}"
+                    IsItemClickEnabled="True"
+                    ItemClick="ItemView_ItemClick"
+                    Loaded="SecondPivot_Loaded"
+                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
+                    <ListView.ItemTemplate>
+                        <DataTemplate>
+                            <StackPanel Margin="0,0,0,9.5">
+                                <TextBlock
+                                    Text="{Binding Title}"
+                                    Pivot.SlideInAnimationGroup="1"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{StaticResource ListViewItemTextBlockStyle}"/>
+                                <TextBlock
+                                    Text="{Binding Description}"
+                                    Pivot.SlideInAnimationGroup="2"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{StaticResource ListViewItemContentTextBlockStyle}"/>
+                            </StackPanel>
+                        </DataTemplate>
+                    </ListView.ItemTemplate>
+                </ListView>
+            </PivotItem>
+        </Pivot>
+    </Grid>
+
+    <Page.BottomAppBar>
+        <CommandBar>
+            <AppBarButton x:Uid="AddAppBarButton" x:Name="AddAppBarButton" Label="add" Icon="Add" Click="AddAppBarButton_Click" />
+            <CommandBar.SecondaryCommands>
+                <AppBarButton x:Uid="SecondaryButton1" x:Name="SecondaryButton1" Label="secondary command 1" />
+                <AppBarButton x:Uid="SecondaryButton2" x:Name="SecondaryButton2" Label="secondary command 2" />
+            </CommandBar.SecondaryCommands>
+        </CommandBar>
+    </Page.BottomAppBar>
+</Page>
diff --git a/WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml.cs b/WindowsPhone/WP81/WP81test/WP81test/PivotPage.xaml.cs
new file mode 100644 (file)
index 0000000..0c16628
--- /dev/null
@@ -0,0 +1,168 @@
+using WP81test.Common;
+using WP81test.Data;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel.Resources;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WP81test
+{
+    public sealed partial class PivotPage : Page
+    {
+        private const string FirstGroupName = "FirstGroup";
+        private const string SecondGroupName = "SecondGroup";
+
+        private readonly NavigationHelper navigationHelper;
+        private readonly ObservableDictionary defaultViewModel = new ObservableDictionary();
+        private readonly ResourceLoader resourceLoader = ResourceLoader.GetForCurrentView("Resources");
+
+        public PivotPage()
+        {
+            this.InitializeComponent();
+
+            this.NavigationCacheMode = NavigationCacheMode.Required;
+
+            this.navigationHelper = new NavigationHelper(this);
+            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
+            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
+        }
+
+        /// <summary>
+        /// Obtiene el <see cref="NavigationHelper"/> asociado a esta <see cref="Page"/>.
+        /// </summary>
+        public NavigationHelper NavigationHelper
+        {
+            get { return this.navigationHelper; }
+        }
+
+        /// <summary>
+        /// Obtiene el modelo de vista para esta <see cref="Page"/>.
+        /// Este puede cambiarse a un modelo de vista fuertemente tipada.
+        /// </summary>
+        public ObservableDictionary DefaultViewModel
+        {
+            get { return this.defaultViewModel; }
+        }
+
+        /// <summary>
+        /// Rellena la página con el contenido pasado durante la navegación. Cualquier estado guardado se
+        /// proporciona también al crear de nuevo una página a partir de una sesión anterior.
+        /// </summary>
+        /// <param name="sender">
+        /// El origen del evento; suele ser <see cref="NavigationHelper"/>.
+        /// </param>
+        /// <param name="e">Datos de evento que proporcionan tanto el parámetro de navegación pasado a
+        /// <see cref="Frame.Navigate(Type, Object)"/> cuando se solicitó inicialmente esta página y
+        /// un diccionario del estado mantenido por esta página durante una sesión
+        /// anterior. El estado será null la primera vez que se visite una página.</param>
+        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
+        {
+            // TODO: Crear un modelo de datos adecuado para el dominio del problema para reemplazar los datos de ejemplo
+            var sampleDataGroup = await SampleDataSource.GetGroupAsync("Group-1");
+            this.DefaultViewModel[FirstGroupName] = sampleDataGroup;
+        }
+
+        /// <summary>
+        /// Mantiene el estado asociado con esta página en caso de que se suspenda la aplicación o
+        /// se descarte la página de la memoria caché de navegación. Los valores deben cumplir los requisitos
+        /// de serialización de <see cref="SuspensionManager.SessionState"/>.
+        /// </summary>
+        /// <param name="sender">El origen del evento; suele ser <see cref="NavigationHelper"/>.</param>
+        /// <param name="e">Datos de evento que proporcionan un diccionario vacío para rellenar con
+        /// un estado serializable.</param>
+        private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
+        {
+            // TODO: Guardar aquí el estado único de la página.
+        }
+
+        /// <summary>
+        /// Agrega un elemento a la lista cuando se hace clic en el botón de la barra de la aplicación.
+        /// </summary>
+        private void AddAppBarButton_Click(object sender, RoutedEventArgs e)
+        {
+            string groupName = this.pivot.SelectedIndex == 0 ? FirstGroupName : SecondGroupName;
+            var group = this.DefaultViewModel[groupName] as SampleDataGroup;
+            var nextItemId = group.Items.Count + 1;
+            var newItem = new SampleDataItem(
+                string.Format(CultureInfo.InvariantCulture, "Group-{0}-Item-{1}", this.pivot.SelectedIndex + 1, nextItemId),
+                string.Format(CultureInfo.CurrentCulture, this.resourceLoader.GetString("NewItemTitle"), nextItemId),
+                string.Empty,
+                string.Empty,
+                this.resourceLoader.GetString("NewItemDescription"),
+                string.Empty);
+
+            group.Items.Add(newItem);
+
+            // Desplazar el elemento nuevo en la vista.
+            var container = this.pivot.ContainerFromIndex(this.pivot.SelectedIndex) as ContentControl;
+            var listView = container.ContentTemplateRoot as ListView;
+            listView.ScrollIntoView(newItem, ScrollIntoViewAlignment.Leading);
+        }
+
+        /// <summary>
+        /// Se invoca al hacer clic en un elemento contenido en una sección.
+        /// </summary>
+        private void ItemView_ItemClick(object sender, ItemClickEventArgs e)
+        {
+            // Navegar a la página de destino adecuada y configurar la nueva página
+            // al pasar la información requerida como parámetro de navegación
+            var itemId = ((SampleDataItem)e.ClickedItem).UniqueId;
+            if (!Frame.Navigate(typeof(ItemPage), itemId))
+            {
+                throw new Exception(this.resourceLoader.GetString("NavigationFailedExceptionMessage"));
+            }
+        }
+
+        /// <summary>
+        /// Carga el contenido del segundo elemento dinámico cuando se desplaza en la vista.
+        /// </summary>
+        private async void SecondPivot_Loaded(object sender, RoutedEventArgs e)
+        {
+            var sampleDataGroup = await SampleDataSource.GetGroupAsync("Group-2");
+            this.DefaultViewModel[SecondGroupName] = sampleDataGroup;
+        }
+
+        #region Registro de NavigationHelper
+
+        /// <summary>
+        /// Los métodos proporcionados en esta sección se usan simplemente para permitir
+        /// que NavigationHelper responda a los métodos de navegación de la página.
+        /// <para>
+        /// Debe incluirse lógica específica de página en los controladores de eventos para 
+        /// <see cref="NavigationHelper.LoadState"/>
+        /// y <see cref="NavigationHelper.SaveState"/>.
+        /// El parámetro de navegación está disponible en el método LoadState 
+        /// junto con el estado de página mantenido durante una sesión anterior.
+        /// </para>
+        /// </summary>
+        /// <param name="e">Proporciona los datos para el evento y los métodos de navegación
+        /// controladores que no pueden cancelar la solicitud de navegación.</param>
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedTo(e);
+        }
+
+        protected override void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedFrom(e);
+        }
+
+        #endregion
+    }
+}
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Properties/AssemblyInfo.cs b/WindowsPhone/WP81/WP81test/WP81test/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..cd3247f
--- /dev/null
@@ -0,0 +1,29 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente 
+// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("WP81test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WP81test")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+//      Versión principal
+//      Versión secundaria 
+//      Número de compilación
+//      Revisión
+//
+// Puede especificar todos los valores o establecer como predeterminados los números de compilación y de revisión 
+// mediante el carácter '*', como se muestra a continuación:
+// [ensamblado: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WP81test/WP81test/Strings/es-ES/Resources.resw b/WindowsPhone/WP81/WP81test/WP81test/Strings/es-ES/Resources.resw
new file mode 100644 (file)
index 0000000..acfa4ee
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0"/>
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string"/>
+              <xsd:attribute name="type" type="xsd:string"/>
+              <xsd:attribute name="mimetype" type="xsd:string"/>
+              <xsd:attribute ref="xml:space"/>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string"/>
+              <xsd:attribute name="name" type="xsd:string"/>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
+              <xsd:attribute ref="xml:space"/>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required"/>
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="AddAppBarButton.Label" xml:space="preserve">
+    <value>agregar</value>
+  </data>
+  <data name="Header.Text" xml:space="preserve">
+    <value>MI APLICACIÓN</value>
+  </data>
+  <data name="NavigationFailedExceptionMessage" xml:space="preserve">
+    <value>Error de navegación.</value>
+  </data>
+  <data name="NewItemDescription" xml:space="preserve">
+    <value>Descripción del elemento: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.</value>
+  </data>
+  <data name="NewItemTitle" xml:space="preserve">
+    <value>Título de elemento: {0}</value>
+  </data>
+  <data name="Pivot.Title" xml:space="preserve">
+    <value>MI APLICACIÓN</value>
+  </data>
+  <data name="PivotItem1.Header" xml:space="preserve">
+    <value>primero</value>
+  </data>
+  <data name="PivotItem2.Header" xml:space="preserve">
+    <value>segundo</value>
+  </data>
+  <data name="SecondaryButton1.Label" xml:space="preserve">
+    <value>comando secundario 1</value>
+  </data>
+  <data name="SecondaryButton2.Label" xml:space="preserve">
+    <value>comando secundario 2</value>
+  </data>
+</root>
diff --git a/WindowsPhone/WP81/WP81test/WP81test/WP81test.csproj b/WindowsPhone/WP81/WP81test/WP81test/WP81test.csproj
new file mode 100644 (file)
index 0000000..06d28a1
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{3bb4c1e0-becd-42b4-8376-b09b55553cde}</ProjectGuid>
+    <OutputType>AppContainerExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>WP81test</RootNamespace>
+    <AssemblyName>WP81test</AssemblyName>
+    <DefaultLanguage>es-ES</DefaultLanguage>
+    <TargetPlatformVersion>8.1</TargetPlatformVersion>
+    <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>    
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\ARM\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+    <OutputPath>bin\ARM\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+    <Page Include="ItemPage.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="PivotPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Common\NavigationHelper.cs" />
+    <Compile Include="Common\ObservableDictionary.cs" />
+    <Compile Include="Common\RelayCommand.cs" />
+    <Compile Include="Common\SuspensionManager.cs" />
+    <Compile Include="DataModel\SampleDataSource.cs" />
+    <Compile Include="ItemPage.xaml.cs">
+      <DependentUpon>ItemPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="PivotPage.xaml.cs">
+      <DependentUpon>PivotPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <AppxManifest Include="Package.appxmanifest">
+      <SubType>Designer</SubType>
+    </AppxManifest>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\Logo.scale-240.png" />
+    <Content Include="Assets\SmallLogo.scale-240.png" />
+    <Content Include="Assets\SplashScreen.scale-240.png" />
+    <Content Include="Assets\Square71x71Logo.scale-240.png" />
+    <Content Include="Assets\StoreLogo.scale-240.png" />
+    <Content Include="Assets\WideLogo.scale-240.png" />
+    <Content Include="Common\ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="DataModel\SampleData.json" />
+    <PRIResource Include="Strings\es-ES\Resources.resw">
+      <SubType>Designer</SubType>
+    </PRIResource>
+  </ItemGroup>
+  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0' ">
+    <VisualStudioVersion>12.0</VisualStudioVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetPlatformIdentifier)' == '' ">
+    <TargetPlatformIdentifier>WindowsPhoneApp</TargetPlatformIdentifier>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
+
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81.sln b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81.sln
new file mode 100644 (file)
index 0000000..7079a30
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30501.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeatherInformation81", "WeatherInformation81\WeatherInformation81.csproj", "{49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|ARM = Debug|ARM
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|ARM = Release|ARM
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|ARM.ActiveCfg = Debug|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|ARM.Build.0 = Debug|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|ARM.Deploy.0 = Debug|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|x86.ActiveCfg = Debug|x86
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|x86.Build.0 = Debug|x86
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Debug|x86.Deploy.0 = Debug|x86
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|Any CPU.Deploy.0 = Release|Any CPU
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|ARM.ActiveCfg = Release|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|ARM.Build.0 = Release|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|ARM.Deploy.0 = Release|ARM
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|x86.ActiveCfg = Release|x86
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|x86.Build.0 = Release|x86
+               {49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}.Release|x86.Deploy.0 = Release|x86
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml
new file mode 100644 (file)
index 0000000..b9e05ed
--- /dev/null
@@ -0,0 +1,7 @@
+<Application
+    x:Class="WeatherInformation81.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WeatherInformation81">
+
+</Application>
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/App.xaml.cs
new file mode 100644 (file)
index 0000000..9cfcddd
--- /dev/null
@@ -0,0 +1,141 @@
+using WeatherInformation81.Common;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WeatherInformation81
+{
+    /// <summary>
+    /// Proporciona un comportamiento específico de la aplicación para complementar la clase Application predeterminada.
+    /// </summary>
+    public sealed partial class App : Application
+    {
+        private TransitionCollection transitions;
+
+        /// <summary>
+        /// Inicializa el objeto de aplicación Singleton. Esta es la primera línea de código creado
+        /// ejecutado y, como tal, es el equivalente lógico de main() o WinMain().
+        /// </summary>
+        public App()
+        {
+            this.InitializeComponent();
+            this.Suspending += this.OnSuspending;
+        }
+
+        /// <summary>
+        /// Se invoca cuando la aplicación la inicia normalmente el usuario final. Se usarán otros puntos
+        /// de entrada cuando la aplicación se inicie para abrir un archivo específico, para mostrar
+        /// resultados de la búsqueda, etc.
+        /// </summary>
+        /// <param name="e">Información detallada acerca de la solicitud y el proceso de inicio.</param>
+        protected override async void OnLaunched(LaunchActivatedEventArgs e)
+        {
+#if DEBUG
+            if (System.Diagnostics.Debugger.IsAttached)
+            {
+                this.DebugSettings.EnableFrameRateCounter = true;
+            }
+#endif
+
+            Frame rootFrame = Window.Current.Content as Frame;
+
+            // No repetir la inicialización de la aplicación si la ventana tiene contenido todavía,
+            // solo asegurarse de que la ventana está activa.
+            if (rootFrame == null)
+            {
+                // Crear un marco para que actúe como contexto de navegación y navegar a la primera página.
+                rootFrame = new Frame();
+
+                // Asociar el marco con una clave SuspensionManager.
+                SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
+
+                // TODO: Cambiar este valor a un tamaño de caché adecuado para la aplicación.
+                rootFrame.CacheSize = 1;
+
+                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
+                {
+                    // Restaurar el estado de sesión guardado solo si procede.
+                    try
+                    {
+                        await SuspensionManager.RestoreAsync();
+                    }
+                    catch (SuspensionManagerException)
+                    {
+                        // Se produjo un error al restaurar el estado.
+                        // Asumir que no hay estado y continuar.
+                    }
+                }
+
+                // Poner el marco en la ventana actual.
+                Window.Current.Content = rootFrame;
+            }
+
+            if (rootFrame.Content == null)
+            {
+                // Quita la navegación de transición en el inicio.
+                if (rootFrame.ContentTransitions != null)
+                {
+                    this.transitions = new TransitionCollection();
+                    foreach (var c in rootFrame.ContentTransitions)
+                    {
+                        this.transitions.Add(c);
+                    }
+                }
+
+                rootFrame.ContentTransitions = null;
+                rootFrame.Navigated += this.RootFrame_FirstNavigated;
+
+                // Cuando no se restaura la pila de navegación para navegar a la primera página,
+                // configurar la nueva página al pasar la información requerida como parámetro
+                // parámetro.
+                if (!rootFrame.Navigate(typeof(PivotPage), e.Arguments))
+                {
+                    throw new Exception("Failed to create initial page");
+                }
+            }
+
+            // Asegurarse de que la ventana actual está activa.
+            Window.Current.Activate();
+        }
+
+        /// <summary>
+        /// Restaura las transiciones de contenido después de iniciar la aplicación.
+        /// </summary>
+        private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)
+        {
+            var rootFrame = sender as Frame;
+            rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };
+            rootFrame.Navigated -= this.RootFrame_FirstNavigated;
+        }
+
+        /// <summary>
+        /// Se invoca al suspender la ejecución de la aplicación. El estado de la aplicación se guarda
+        /// sin saber si la aplicación se terminará o se reanudará con el contenido
+        /// de la memoria aún intacto.
+        /// </summary>
+        /// <param name="sender">Origen de la solicitud de suspensión.</param>
+        /// <param name="e">Detalles sobre la solicitud de suspensión.</param>
+        private async void OnSuspending(object sender, SuspendingEventArgs e)
+        {
+            var deferral = e.SuspendingOperation.GetDeferral();
+            await SuspensionManager.SaveAsync();
+            deferral.Complete();
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Logo.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Logo.scale-240.png
new file mode 100644 (file)
index 0000000..76921ca
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Logo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SmallLogo.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SmallLogo.scale-240.png
new file mode 100644 (file)
index 0000000..3166301
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SmallLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SplashScreen.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SplashScreen.scale-240.png
new file mode 100644 (file)
index 0000000..33f26b3
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/SplashScreen.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Square71x71Logo.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Square71x71Logo.scale-240.png
new file mode 100644 (file)
index 0000000..cfa54be
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/Square71x71Logo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/StoreLogo.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/StoreLogo.scale-240.png
new file mode 100644 (file)
index 0000000..47e084b
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/StoreLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/WideLogo.scale-240.png b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/WideLogo.scale-240.png
new file mode 100644 (file)
index 0000000..6249d29
Binary files /dev/null and b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Assets/WideLogo.scale-240.png differ
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/NavigationHelper.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/NavigationHelper.cs
new file mode 100644 (file)
index 0000000..560caa6
--- /dev/null
@@ -0,0 +1,436 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using Windows.System;
+using Windows.UI.Core;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+
+namespace WeatherInformation81.Common
+{
+    /// <summary>
+    /// NavigationHelper es útil para la navegación entre páginas.  Proporciona comandos que se usan para 
+    /// navegar hacia atrás y hacia adelante, además de registros de los accesos directos 
+    /// de mouse y teclado estándar usados para retroceder y avanzar en Windows y el botón del hardware para retroceder en
+    /// Windows Phone. Además, integra SuspensionManager para controlar la administración del
+    /// estado y de la duración de los procesos al navegar entre páginas.
+    /// </summary>
+    /// <example>
+    /// Para usar NavigationHelper, realice los dos pasos siguientes o bien
+    /// empiece a usar BasicPage o cualquier otra plantilla de elemento de página distinta de BlankPage.
+    /// 
+    /// 1) Crear una instancia de NavigationHelper en algún lugar como 
+    ///     el constructor de la página y registrar una devolución de llamada para los eventos LoadState y 
+    ///     SaveState.
+    /// <code>
+    ///     public MyPage()
+    ///     {
+    ///         this.InitializeComponent();
+    ///         var navigationHelper = new NavigationHelper(this);
+    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;
+    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;
+    ///     }
+    ///     
+    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
+    ///     { }
+    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)
+    ///     { }
+    /// </code>
+    /// 
+    /// 2) Registrar la página para llamar a NavigationHelper siempre que la página participe 
+    ///     en la navegación invalidando los eventos <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedTo"/> 
+    ///     y <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedFrom"/>.
+    /// <code>
+    ///     protected override void OnNavigatedTo(NavigationEventArgs e)
+    ///     {
+    ///         navigationHelper.OnNavigatedTo(e);
+    ///     }
+    ///     
+    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)
+    ///     {
+    ///         navigationHelper.OnNavigatedFrom(e);
+    ///     }
+    /// </code>
+    /// </example>
+    [Windows.Foundation.Metadata.WebHostHidden]
+    public class NavigationHelper : DependencyObject
+    {
+        private Page Page { get; set; }
+        private Frame Frame { get { return this.Page.Frame; } }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="NavigationHelper"/>.
+        /// </summary>
+        /// <param name="page">Referencia a la página actual usada para la navegación.  
+        /// Esta referencia permite la manipulación de marcos y ayuda a garantizar que las solicitudes 
+        /// de navegación con el teclado solo se producen cuando la página ocupa la ventana completa.</param>
+        public NavigationHelper(Page page)
+        {
+            this.Page = page;
+
+            // Cuando esta página forma parte del árbol visual, realizar dos cambios:
+            // 1) Asignar el estado de vista de la aplicación a un estado visual para la página
+            // 2) Controlar las solicitudes de navegación del hardware
+            this.Page.Loaded += (sender, e) =>
+            {
+#if WINDOWS_PHONE_APP
+                Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+#else
+                // La navegación con el teclado y el mouse se aplica únicamente cuando se ocupa toda la ventana
+                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&
+                    this.Page.ActualWidth == Window.Current.Bounds.Width)
+                {
+                    // Escuchar a la ventana directamente de forma que el foco no es necesario
+                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
+                        CoreDispatcher_AcceleratorKeyActivated;
+                    Window.Current.CoreWindow.PointerPressed +=
+                        this.CoreWindow_PointerPressed;
+                }
+#endif
+            };
+
+            // Deshacer los cambios cuando la página ya no está visible
+            this.Page.Unloaded += (sender, e) =>
+            {
+#if WINDOWS_PHONE_APP
+                Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
+#else
+                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=
+                    CoreDispatcher_AcceleratorKeyActivated;
+                Window.Current.CoreWindow.PointerPressed -=
+                    this.CoreWindow_PointerPressed;
+#endif
+            };
+        }
+
+        #region Admitir navegación
+
+        RelayCommand _goBackCommand;
+        RelayCommand _goForwardCommand;
+
+        /// <summary>
+        /// <see cref="RelayCommand"/> usado para enlazar a la propiedad Command del botón Atrás
+        /// para navegar al elemento más reciente del historial de navegación hacia atrás, si un objeto Frame
+        /// administra su propio historial de navegación.
+        /// 
+        /// El objeto <see cref="RelayCommand"/> está configurado para usar el método virtual <see cref="GoBack"/>
+        /// como acción de ejecución y <see cref="CanGoBack"/> para CanExecute.
+        /// </summary>
+        public RelayCommand GoBackCommand
+        {
+            get
+            {
+                if (_goBackCommand == null)
+                {
+                    _goBackCommand = new RelayCommand(
+                        () => this.GoBack(),
+                        () => this.CanGoBack());
+                }
+                return _goBackCommand;
+            }
+            set
+            {
+                _goBackCommand = value;
+            }
+        }
+        /// <summary>
+        /// <see cref="RelayCommand"/> usado para navegar al elemento más reciente en 
+        /// el historial de navegación hacia delante, si un objeto Frame administra su propio historial de navegación.
+        /// 
+        /// El objeto <see cref="RelayCommand"/> está configurado para usar el método virtual <see cref="GoForward"/>
+        /// como acción de ejecución y <see cref="CanGoForward"/> para CanExecute.
+        /// </summary>
+        public RelayCommand GoForwardCommand
+        {
+            get
+            {
+                if (_goForwardCommand == null)
+                {
+                    _goForwardCommand = new RelayCommand(
+                        () => this.GoForward(),
+                        () => this.CanGoForward());
+                }
+                return _goForwardCommand;
+            }
+        }
+
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoBackCommand"/>
+        /// para determinar si el objeto <see cref="Frame"/> puede retroceder.
+        /// </summary>
+        /// <returns>
+        /// true si el objeto <see cref="Frame"/> tiene al menos una entrada 
+        /// en el historial de navegación hacia atrás.
+        /// </returns>
+        public virtual bool CanGoBack()
+        {
+            return this.Frame != null && this.Frame.CanGoBack;
+        }
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoForwardCommand"/>
+        /// para determinar si el objeto <see cref="Frame"/> puede avanzar.
+        /// </summary>
+        /// <returns>
+        /// true si el objeto <see cref="Frame"/> tiene al menos una entrada 
+        /// en el historial de navegación hacia delante.
+        /// </returns>
+        public virtual bool CanGoForward()
+        {
+            return this.Frame != null && this.Frame.CanGoForward;
+        }
+
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoBackCommand"/>
+        /// para invocar el método <see cref="Windows.UI.Xaml.Controls.Frame.GoBack"/>.
+        /// </summary>
+        public virtual void GoBack()
+        {
+            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();
+        }
+        /// <summary>
+        /// Método virtual usado por la propiedad <see cref="GoForwardCommand"/>
+        /// para invocar el método <see cref="Windows.UI.Xaml.Controls.Frame.GoForward"/>.
+        /// </summary>
+        public virtual void GoForward()
+        {
+            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();
+        }
+
+#if WINDOWS_PHONE_APP
+        /// <summary>
+        /// Se invoca cuando se presiona el botón para retroceder del hardware. Solo para Windows Phone.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
+        {
+            if (this.GoBackCommand.CanExecute(null))
+            {
+                e.Handled = true;
+                this.GoBackCommand.Execute(null);
+            }
+        }
+#else
+        /// <summary>
+        /// Se invoca en cada pulsación de tecla, incluidas las teclas del sistema como combinaciones de teclas Alt, cuando
+        /// esta página está activa y ocupa toda la ventana.  Se usa para detectar la navegación con el teclado
+        /// entre páginas incluso cuando la página no tiene el foco.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
+            AcceleratorKeyEventArgs e)
+        {
+            var virtualKey = e.VirtualKey;
+
+            // Investigar más solo cuando se presionan las teclas Izquierda, Derecha o las teclas
+            // dedicadas Repág o Avpág
+            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
+                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
+                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
+                (int)virtualKey == 166 || (int)virtualKey == 167))
+            {
+                var coreWindow = Window.Current.CoreWindow;
+                var downState = CoreVirtualKeyStates.Down;
+                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
+                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
+                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
+                bool noModifiers = !menuKey && !controlKey && !shiftKey;
+                bool onlyAlt = menuKey && !controlKey && !shiftKey;
+
+                if (((int)virtualKey == 166 && noModifiers) ||
+                    (virtualKey == VirtualKey.Left && onlyAlt))
+                {
+                    // Cuando se presionan las teclas Repág o Alt+Izquierda, navegar hacia atrás
+                    e.Handled = true;
+                    this.GoBackCommand.Execute(null);
+                }
+                else if (((int)virtualKey == 167 && noModifiers) ||
+                    (virtualKey == VirtualKey.Right && onlyAlt))
+                {
+                    // Cuando se presionan las teclas Avpág o Alt+Derecha, navegar hacia delante
+                    e.Handled = true;
+                    this.GoForwardCommand.Execute(null);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Se invoca en cada clic del mouse, punteo en la pantalla táctil o una interacción equivalente cuando esta
+        /// página está activa y ocupa toda la ventana.  Se usa para detectar los clics de botón del mouse
+        /// siguiente y anterior del estilo del explorador para navegar entre páginas.
+        /// </summary>
+        /// <param name="sender">Instancia que desencadena el evento.</param>
+        /// <param name="e">Datos de evento que describen las condiciones que dan lugar al evento.</param>
+        private void CoreWindow_PointerPressed(CoreWindow sender,
+            PointerEventArgs e)
+        {
+            var properties = e.CurrentPoint.Properties;
+
+            // Omitir la presión simultánea de botones con los botones Izquierda, Derecha y Medio
+            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||
+                properties.IsMiddleButtonPressed) return;
+
+            // Si se presiona Repág o Avpág (pero no ambos), navegar adecuadamente
+            bool backPressed = properties.IsXButton1Pressed;
+            bool forwardPressed = properties.IsXButton2Pressed;
+            if (backPressed ^ forwardPressed)
+            {
+                e.Handled = true;
+                if (backPressed) this.GoBackCommand.Execute(null);
+                if (forwardPressed) this.GoForwardCommand.Execute(null);
+            }
+        }
+#endif
+
+        #endregion
+
+        #region Administración de la duración de los procesos
+
+        private String _pageKey;
+
+        /// <summary>
+        /// Registre este evento en la página actual para rellenar la página
+        /// con contenido pasado durante la navegación, así como cualquier estado
+        /// guardado proporcionado al recrear una página a partir de una sesión anterior.
+        /// </summary>
+        public event LoadStateEventHandler LoadState;
+        /// <summary>
+        /// Registre este evento en la página actual para mantener
+        /// el estado asociado a la página actual en caso de que
+        /// la aplicación se suspenda o la página se descarte de
+        /// la memoria caché de navegación.
+        /// </summary>
+        public event SaveStateEventHandler SaveState;
+
+        /// <summary>
+        /// Se invoca cuando esta página se va a mostrar en un objeto Frame.  
+        /// Este método llama a <see cref="LoadState"/>, donde debe incluirse
+        /// toda la lógica de navegación y administración de la duración de los procesos específica de la página.
+        /// </summary>
+        /// <param name="e">Datos de evento que describen cómo se llegó a esta página.  La propiedad Parameter
+        /// proporciona el grupo que se va a mostrar.</param>
+        public void OnNavigatedTo(NavigationEventArgs e)
+        {
+            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+            this._pageKey = "Page-" + this.Frame.BackStackDepth;
+
+            if (e.NavigationMode == NavigationMode.New)
+            {
+                // Borrar el estado existente para la navegación hacia delante cuando se agregue una nueva página a la
+                // pila de navegación
+                var nextPageKey = this._pageKey;
+                int nextPageIndex = this.Frame.BackStackDepth;
+                while (frameState.Remove(nextPageKey))
+                {
+                    nextPageIndex++;
+                    nextPageKey = "Page-" + nextPageIndex;
+                }
+
+                // Pasar el parámetro de navegación a la nueva página
+                if (this.LoadState != null)
+                {
+                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
+                }
+            }
+            else
+            {
+                // Pasar el parámetro de navegación y el estado de página mantenido a la página usando
+                // la misma estrategia para cargar el estado suspendido y volver a crear las páginas descartadas
+                // a partir de la memoria caché
+                if (this.LoadState != null)
+                {
+                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));
+                }
+            }
+        }
+
+        /// <summary>
+        /// Se invoca cuando esta página deja de estar visible en un marco.
+        /// Este método llama a <see cref="SaveState"/>, donde debe incluirse
+        /// toda la lógica de navegación y administración de la duración de los procesos específica de la página.
+        /// </summary>
+        /// <param name="e">Datos de evento que describen cómo se llegó a esta página.  La propiedad Parameter
+        /// proporciona el grupo que se va a mostrar.</param>
+        public void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+            var pageState = new Dictionary<String, Object>();
+            if (this.SaveState != null)
+            {
+                this.SaveState(this, new SaveStateEventArgs(pageState));
+            }
+            frameState[_pageKey] = pageState;
+        }
+
+        #endregion
+    }
+
+    /// <summary>
+    /// Representa el método que controlará el evento <see cref="NavigationHelper.LoadState"/>
+    /// </summary>
+    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);
+    /// <summary>
+    /// Representa el método que controlará el evento <see cref="NavigationHelper.SaveState"/>
+    /// </summary>
+    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);
+
+    /// <summary>
+    /// Clase usada para contener los datos de evento requeridos cuando una página intenta cargar el estado.
+    /// </summary>
+    public class LoadStateEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Valor de parámetro pasado a <see cref="Frame.Navigate(Type, Object)"/> 
+        /// cuando se solicitó inicialmente esta página.
+        /// </summary>
+        public Object NavigationParameter { get; private set; }
+        /// <summary>
+        /// Diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  Será null la primera vez que se visite una página.
+        /// </summary>
+        public Dictionary<string, Object> PageState { get; private set; }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="LoadStateEventArgs"/>.
+        /// </summary>
+        /// <param name="navigationParameter">
+        /// Valor de parámetro pasado a <see cref="Frame.Navigate(Type, Object)"/> 
+        /// cuando se solicitó inicialmente esta página.
+        /// </param>
+        /// <param name="pageState">
+        /// Diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  Será null la primera vez que se visite una página.
+        /// </param>
+        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)
+            : base()
+        {
+            this.NavigationParameter = navigationParameter;
+            this.PageState = pageState;
+        }
+    }
+    /// <summary>
+    /// Clase usada para contener los datos de evento requeridos cuando una página intenta guardar el estado.
+    /// </summary>
+    public class SaveStateEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Diccionario vacío para rellenar con un estado serializable.
+        /// </summary>
+        public Dictionary<string, Object> PageState { get; private set; }
+
+        /// <summary>
+        /// Inicializa una nueva instancia de la clase <see cref="SaveStateEventArgs"/>.
+        /// </summary>
+        /// <param name="pageState">Diccionario vacío para rellenar con un estado serializable.</param>
+        public SaveStateEventArgs(Dictionary<string, Object> pageState)
+            : base()
+        {
+            this.PageState = pageState;
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ObservableDictionary.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ObservableDictionary.cs
new file mode 100644 (file)
index 0000000..b790a1e
--- /dev/null
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Windows.Foundation.Collections;
+
+namespace WeatherInformation81.Common
+{
+    /// <summary>
+    /// Implementación de IObservableMap que admite volver a entrar para usar como
+    /// modelo de vista predeterminada.
+    /// </summary>
+    public class ObservableDictionary : IObservableMap<string, object>
+    {
+        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>
+        {
+            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)
+            {
+                this.CollectionChange = change;
+                this.Key = key;
+            }
+
+            public CollectionChange CollectionChange { get; private set; }
+            public string Key { get; private set; }
+        }
+
+        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
+        public event MapChangedEventHandler<string, object> MapChanged;
+
+        private void InvokeMapChanged(CollectionChange change, string key)
+        {
+            var eventHandler = MapChanged;
+            if (eventHandler != null)
+            {
+                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
+            }
+        }
+
+        public void Add(string key, object value)
+        {
+            this._dictionary.Add(key, value);
+            this.InvokeMapChanged(CollectionChange.ItemInserted, key);
+        }
+
+        public void Add(KeyValuePair<string, object> item)
+        {
+            this.Add(item.Key, item.Value);
+        }
+
+        public bool Remove(string key)
+        {
+            if (this._dictionary.Remove(key))
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+                return true;
+            }
+            return false;
+        }
+
+        public bool Remove(KeyValuePair<string, object> item)
+        {
+            object currentValue;
+            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&
+                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
+                return true;
+            }
+            return false;
+        }
+
+        public object this[string key]
+        {
+            get
+            {
+                return this._dictionary[key];
+            }
+            set
+            {
+                this._dictionary[key] = value;
+                this.InvokeMapChanged(CollectionChange.ItemChanged, key);
+            }
+        }
+
+        public void Clear()
+        {
+            var priorKeys = this._dictionary.Keys.ToArray();
+            this._dictionary.Clear();
+            foreach (var key in priorKeys)
+            {
+                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+            }
+        }
+
+        public ICollection<string> Keys
+        {
+            get { return this._dictionary.Keys; }
+        }
+
+        public bool ContainsKey(string key)
+        {
+            return this._dictionary.ContainsKey(key);
+        }
+
+        public bool TryGetValue(string key, out object value)
+        {
+            return this._dictionary.TryGetValue(key, out value);
+        }
+
+        public ICollection<object> Values
+        {
+            get { return this._dictionary.Values; }
+        }
+
+        public bool Contains(KeyValuePair<string, object> item)
+        {
+            return this._dictionary.Contains(item);
+        }
+
+        public int Count
+        {
+            get { return this._dictionary.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return false; }
+        }
+
+        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
+        {
+            return this._dictionary.GetEnumerator();
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return this._dictionary.GetEnumerator();
+        }
+
+        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
+        {
+            int arraySize = array.Length;
+            foreach (var pair in this._dictionary)
+            {
+                if (arrayIndex >= arraySize) break;
+                array[arrayIndex++] = pair;
+            }
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ReadMe.txt b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/ReadMe.txt
new file mode 100644 (file)
index 0000000..b532644
--- /dev/null
@@ -0,0 +1,10 @@
+El directorio Common contiene clases que simplifican el desarrollo de 
+aplicaciones. 
+
+Las clases del directorio Common forman parte del proyecto y se pueden mejorar 
+para satisfacer sus necesidades. Se debe tener cuidado al modificar los métodos 
+y las propiedades existentes, ya que los cambios no compatibles requerirán 
+cambios correspondientes en el código incluido en diversas plantillas de Visual 
+Studio. Por ejemplo, las páginas adicionales agregadas al proyecto se escriben 
+suponiendo que los métodos y propiedades originales de las clases Common siguen 
+presentes y que los nombres de los tipos no han cambiado. 
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/RelayCommand.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/RelayCommand.cs
new file mode 100644 (file)
index 0000000..0121f8c
--- /dev/null
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+
+namespace WeatherInformation81.Common
+{
+    /// <summary>
+    /// Comando cuyo único fin es transmitir su funcionalidad 
+    /// a otros objetos mediante la invocación de delegados. 
+    /// El valor devuelto predeterminado para el método CanExecute es 'true'.
+    /// <see cref="RaiseCanExecuteChanged"/> debe llamarse siempre
+    /// Se espera que <see cref="CanExecute"/> devuelva un valor distinto.
+    /// </summary>
+    public class RelayCommand : ICommand
+    {
+        private readonly Action _execute;
+        private readonly Func<bool> _canExecute;
+
+        /// <summary>
+        /// Se desencadena al llamar a RaiseCanExecuteChanged.
+        /// </summary>
+        public event EventHandler CanExecuteChanged;
+
+        /// <summary>
+        /// Crea un nuevo comando que puede ejecutarse siempre.
+        /// </summary>
+        /// <param name="execute">Lógica de ejecución.</param>
+        public RelayCommand(Action execute)
+            : this(execute, null)
+        {
+        }
+
+        /// <summary>
+        /// Crea un nuevo comando.
+        /// </summary>
+        /// <param name="execute">Lógica de ejecución.</param>
+        /// <param name="canExecute">Lógica de estado de ejecución.</param>
+        public RelayCommand(Action execute, Func<bool> canExecute)
+        {
+            if (execute == null)
+                throw new ArgumentNullException("execute");
+            _execute = execute;
+            _canExecute = canExecute;
+        }
+
+        /// <summary>
+        /// Determina si <see cref="RelayCommand"/> puede ejecutarse en su estado actual.
+        /// </summary>
+        /// <param name="parameter">
+        /// Datos usados por el comando. Si el comando no requiere que se pasen datos, este objeto puede establecerse en null.
+        /// </param>
+        /// <returns>true si se puede ejecutar este comando; en caso contrario, false.</returns>
+        public bool CanExecute(object parameter)
+        {
+            return _canExecute == null ? true : _canExecute();
+        }
+
+        /// <summary>
+        /// Ejecuta <see cref="RelayCommand"/> en el destino del comando actual.
+        /// </summary>
+        /// <param name="parameter">
+        /// Datos usados por el comando. Si el comando no requiere que se pasen datos, este objeto puede establecerse en null.
+        /// </param>
+        public void Execute(object parameter)
+        {
+            _execute();
+        }
+
+        /// <summary>
+        /// Método usado para generar el evento <see cref="CanExecuteChanged"/>
+        /// para indicar que el valor devuelto de <see cref="CanExecute"/>
+        /// ha cambiado.
+        /// </summary>
+        public void RaiseCanExecuteChanged()
+        {
+            var handler = CanExecuteChanged;
+            if (handler != null)
+            {
+                handler(this, EventArgs.Empty);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/SuspensionManager.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Common/SuspensionManager.cs
new file mode 100644 (file)
index 0000000..4101fb4
--- /dev/null
@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.ApplicationModel;
+using Windows.Storage;
+using Windows.Storage.Streams;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace WeatherInformation81.Common
+{
+    /// <summary>
+    /// SuspensionManager captura el estado de sesión global para simplificar la administración de la duración de los procesos
+    /// de una aplicación.  Tenga en cuenta que el estado de la sesión se borrará automáticamente bajo diversas
+    /// condiciones y solamente debería usarse para almacenar información que sería conveniente
+    /// para el tema, pero se debe descartar cuando la aplicación se bloquea o se
+    /// actualiza.
+    /// </summary>
+    internal sealed class SuspensionManager
+    {
+        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();
+        private static List<Type> _knownTypes = new List<Type>();
+        private const string sessionStateFilename = "_sessionState.xml";
+
+        /// <summary>
+        /// Proporciona acceso al estado de sesión global para la sesión actual.  Este estado
+        /// se serializa mediante <see cref="SaveAsync"/> y se restaura con
+        /// <see cref="RestoreAsync"/>, por lo que los valores deben poder serializarse mediante
+        /// <see cref="DataContractSerializer"/> y ser tan compactos como sea posible.  Se recomienda el uso
+        /// de cadenas y otros tipos de datos independientes.
+        /// </summary>
+        public static Dictionary<string, object> SessionState
+        {
+            get { return _sessionState; }
+        }
+
+        /// <summary>
+        /// Lista de tipos personalizados proporcionados a <see cref="DataContractSerializer"/> al
+        /// leer y escribir el estado de la sesión.  Pueden agregarse tipos adicionales, inicialmente
+        /// vacíos, para personalizar el proceso de serialización.
+        /// </summary>
+        public static List<Type> KnownTypes
+        {
+            get { return _knownTypes; }
+        }
+
+        /// <summary>
+        /// Guardar el <see cref="SessionState"/> actual.  Toda instancia de <see cref="Frame"/>
+        /// registrada en <see cref="RegisterFrame"/> también conservará la
+        /// pila de navegación actual que, a su vez, ofrece a la <see cref="Page"/> activa la oportunidad
+        /// de guardar su estado.
+        /// </summary>
+        /// <returns>Tarea asincrónica que refleja cuándo se ha guardado el estado de la sesión.</returns>
+        public static async Task SaveAsync()
+        {
+            try
+            {
+                // Guardar el estado de navegación para todos los marcos registrados
+                foreach (var weakFrameReference in _registeredFrames)
+                {
+                    Frame frame;
+                    if (weakFrameReference.TryGetTarget(out frame))
+                    {
+                        SaveFrameNavigationState(frame);
+                    }
+                }
+
+                // Serializar el estado de la sesión de forma sincrónica para impedir el acceso asincrónico al estado
+                // compartido
+                MemoryStream sessionData = new MemoryStream();
+                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+                serializer.WriteObject(sessionData, _sessionState);
+
+                // Obtener un flujo de salida para el archivo SessionState y escribir el estado de forma asincrónica
+                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);
+                using (Stream fileStream = await file.OpenStreamForWriteAsync())
+                {
+                    sessionData.Seek(0, SeekOrigin.Begin);
+                    await sessionData.CopyToAsync(fileStream);
+                }
+            }
+            catch (Exception e)
+            {
+                throw new SuspensionManagerException(e);
+            }
+        }
+
+        /// <summary>
+        /// Restaura el <see cref="SessionState"/> previamente guardado.  Toda instancia de <see cref="Frame"/>
+        /// registrada en <see cref="RegisterFrame"/> también restaurará su estado de navegación
+        /// anterior lo que, a su vez, ofrece a su <see cref="Page"/> activa la oportunidad de restaurar su
+        /// estado.
+        /// </summary>
+        /// <param name="sessionBaseKey">Clave opcional que identifica el tipo de sesión.
+        /// Se puede usar para distinguir entre varios escenarios de inicio de aplicaciones.</param>
+        /// <returns>Tarea asincrónica que refleja cuándo se ha leído el estado de la sesión.  No hay
+        /// que confiar en el contenido de <see cref="SessionState"/>hasta que no se complete
+        /// esta tarea.</returns>
+        public static async Task RestoreAsync(String sessionBaseKey = null)
+        {
+            _sessionState = new Dictionary<String, Object>();
+
+            try
+            {
+                // Obtener el flujo de entrada para el archivo SessionState
+                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);
+                using (IInputStream inStream = await file.OpenSequentialReadAsync())
+                {
+                    // Deserializar el estado de sesión
+                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());
+                }
+
+                // Restaurar los marcos registrados a su estado guardado
+                foreach (var weakFrameReference in _registeredFrames)
+                {
+                    Frame frame;
+                    if (weakFrameReference.TryGetTarget(out frame) && (string)frame.GetValue(FrameSessionBaseKeyProperty) == sessionBaseKey)
+                    {
+                        frame.ClearValue(FrameSessionStateProperty);
+                        RestoreFrameNavigationState(frame);
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                throw new SuspensionManagerException(e);
+            }
+        }
+
+        private static DependencyProperty FrameSessionStateKeyProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionStateKey", typeof(String), typeof(SuspensionManager), null);
+        private static DependencyProperty FrameSessionBaseKeyProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionBaseKeyParams", typeof(String), typeof(SuspensionManager), null);
+        private static DependencyProperty FrameSessionStateProperty =
+            DependencyProperty.RegisterAttached("_FrameSessionState", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);
+        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();
+
+        /// <summary>
+        /// Registra una instancia de <see cref="Frame"/> para permitir que su historial de navegación se guarde
+        /// y restaure desde <see cref="SessionState"/>.  Los marcos deben registrarse una vez
+        /// inmediatamente tras su creación si van a participar en la administración del estado de sesión.  Tras el
+        /// registro, si el estado ya se ha restaurado para la clave especificada,
+        /// se restaurará inmediatamente el historial de navegación.  Las invocaciones subsiguientes de
+        /// <see cref="RestoreAsync"/> también restaurarán el historial de navegación.
+        /// </summary>
+        /// <param name="frame">Instancia cuyo historial de navegación debería administrarse mediante
+        /// <see cref="SuspensionManager"/></param>
+        /// <param name="sessionStateKey">Clave única de <see cref="SessionState"/> que se usa para
+        /// almacenar información relacionada con la navegación.</param>
+        /// <param name="sessionBaseKey">Clave opcional que identifica el tipo de sesión.
+        /// Se puede usar para distinguir entre varios escenarios de inicio de aplicaciones.</param>
+        public static void RegisterFrame(Frame frame, String sessionStateKey, String sessionBaseKey = null)
+        {
+            if (frame.GetValue(FrameSessionStateKeyProperty) != null)
+            {
+                throw new InvalidOperationException("Frames can only be registered to one session state key");
+            }
+
+            if (frame.GetValue(FrameSessionStateProperty) != null)
+            {
+                throw new InvalidOperationException("Frames must be either be registered before accessing frame session state, or not registered at all");
+            }
+
+            if (!string.IsNullOrEmpty(sessionBaseKey))
+            {
+                frame.SetValue(FrameSessionBaseKeyProperty, sessionBaseKey);
+                sessionStateKey = sessionBaseKey + "_" + sessionStateKey;
+            }
+
+            // Usar una propiedad de dependencia para asociar la clave de sesión a un marco y mantener una lista de marcos cuyo
+            // estado de navegación deba administrarse
+            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);
+            _registeredFrames.Add(new WeakReference<Frame>(frame));
+
+            // Comprobar si el estado de navegación puede restaurarse
+            RestoreFrameNavigationState(frame);
+        }
+
+        /// <summary>
+        /// Desasocia un <see cref="Frame"/> previamente registrado mediante <see cref="RegisterFrame"/>
+        /// de <see cref="SessionState"/>.  Todo estado de navegación previamente capturado se
+        /// quitará.
+        /// </summary>
+        /// <param name="frame">Instancia cuyo historial de navegación debería dejar de ser
+        /// administrado.</param>
+        public static void UnregisterFrame(Frame frame)
+        {
+            // Quitar estado de la sesión y quitar el marco de la lista de marcos cuyo estado
+            // de navegación se guardará (junto con cualquier referencia débil que haya dejado de estar accesible)
+            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));
+            _registeredFrames.RemoveAll((weakFrameReference) =>
+            {
+                Frame testFrame;
+                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;
+            });
+        }
+
+        /// <summary>
+        /// Proporciona almacenamiento para el estado de sesión asociado al <see cref="Frame"/> especificado.
+        /// El estado de sesión de los marcos registrados previamente en <see cref="RegisterFrame"/>
+        /// se guardó y restauró automáticamente como parte del
+        /// <see cref="SessionState"/> global.  Los marcos no registrados tienen un estado transitorio
+        /// que puede ser útil al restaurar páginas descartadas de la
+        /// memoria caché de navegación.
+        /// </summary>
+        /// <remarks>Las aplicaciones pueden elegir basarse en <see cref="NavigationHelper"/> para administrar
+        /// el estado específico de página en lugar de trabajar directamente con el estado de sesión del marco.</remarks>
+        /// <param name="frame">Instancia para la que se desea obtener el estado de sesión.</param>
+        /// <returns>Colección de estados sujeta al mismo mecanismo de serialización que
+        /// <see cref="SessionState"/>.</returns>
+        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)
+        {
+            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);
+
+            if (frameState == null)
+            {
+                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);
+                if (frameSessionKey != null)
+                {
+                    // Los marcos registrados reflejan el estado de sesión correspondiente
+                    if (!_sessionState.ContainsKey(frameSessionKey))
+                    {
+                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();
+                    }
+                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];
+                }
+                else
+                {
+                    // Los marcos no registrados tienen un estado transitorio
+                    frameState = new Dictionary<String, Object>();
+                }
+                frame.SetValue(FrameSessionStateProperty, frameState);
+            }
+            return frameState;
+        }
+
+        private static void RestoreFrameNavigationState(Frame frame)
+        {
+            var frameState = SessionStateForFrame(frame);
+            if (frameState.ContainsKey("Navigation"))
+            {
+                frame.SetNavigationState((String)frameState["Navigation"]);
+            }
+        }
+
+        private static void SaveFrameNavigationState(Frame frame)
+        {
+            var frameState = SessionStateForFrame(frame);
+            frameState["Navigation"] = frame.GetNavigationState();
+        }
+    }
+    public class SuspensionManagerException : Exception
+    {
+        public SuspensionManagerException()
+        {
+        }
+
+        public SuspensionManagerException(Exception e)
+            : base("SuspensionManager failed", e)
+        {
+
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleData.json b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleData.json
new file mode 100644 (file)
index 0000000..673f22e
--- /dev/null
@@ -0,0 +1,327 @@
+{"Groups":[
+  {
+    "UniqueId": "Group-1",
+    "Title": "Group Title: 1",
+    "Subtitle": "Group subtitle: 1",
+    "ImagePath": "Assets/DarkGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-1-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-1-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-2",
+    "Title": "Group Title: 2",
+    "Subtitle": "Group subtitle: 2",
+    "ImagePath": "Assets/LightGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-2-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-2-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-2-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-3",
+    "Title": "Group Title: 3",
+    "Subtitle": "Group subtitle: 3",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-3-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-3-Item-7",
+        "Title": "Item Title: 7",
+        "Subtitle": "Item Subtitle: 7",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-4",
+    "Title": "Group Title: 4",
+    "Subtitle": "Group subtitle: 4",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-4-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-4-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-5",
+    "Title": "Group Title: 5",
+    "Subtitle": "Group subtitle: 5",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-5-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-5-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  },
+  {
+    "UniqueId": "Group-6",
+    "Title": "Group Title: 6",
+    "Subtitle": "Group subtitle: 6",
+    "ImagePath": "Assets/MediumGray.png",
+    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
+    "Items":
+    [
+      {
+        "UniqueId": "Group-6-Item-1",
+        "Title": "Item Title: 1",
+        "Subtitle": "Item Subtitle: 1",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-2",
+        "Title": "Item Title: 2",
+        "Subtitle": "Item Subtitle: 2",
+        "ImagePath": "Assets/MediumGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-3",
+        "Title": "Item Title: 3",
+        "Subtitle": "Item Subtitle: 3",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-4",
+        "Title": "Item Title: 4",
+        "Subtitle": "Item Subtitle: 4",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-5",
+        "Title": "Item Title: 5",
+        "Subtitle": "Item Subtitle: 5",
+        "ImagePath": "Assets/LightGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-6",
+        "Title": "Item Title: 6",
+        "Subtitle": "Item Subtitle: 6",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-7",
+        "Title": "Item Title: 7",
+        "Subtitle": "Item Subtitle: 7",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      },
+      {
+        "UniqueId": "Group-6-Item-8",
+        "Title": "Item Title: 8",
+        "Subtitle": "Item Subtitle: 8",
+        "ImagePath": "Assets/DarkGray.png",
+        "Description" : "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
+        "Content" : "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\n\nCurabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat"
+      }
+    ]
+  }
+]
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleDataSource.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/DataModel/SampleDataSource.cs
new file mode 100644 (file)
index 0000000..b6edca5
--- /dev/null
@@ -0,0 +1,153 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using Windows.Data.Json;
+using Windows.Storage;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Imaging;
+
+// El modelo de datos definido por este archivo sirve como ejemplo representativo de un modelo
+// modelo de vista predeterminada.  Los nombres de propiedad elegidos coinciden con enlaces de datos en las plantillas de elemento estándar.
+//
+// Las aplicaciones pueden usar este modelo como punto de inicio y ampliarlo o descartarlo completamente
+// y reemplazarlo por algo adecuado a sus necesidades. Si usa este modelo, puede mejorar la capacidad de respuesta 
+// de la aplicación iniciando la tarea de carga de datos en el código subyacente de App.xaml cuando la aplicación 
+// se inicia por primera vez.
+
+namespace WeatherInformation81.Data
+{
+    /// <summary>
+    /// Modelo de datos de elemento genérico.
+    /// </summary>
+    public class SampleDataItem
+    {
+        public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, String description, String content)
+        {
+            this.UniqueId = uniqueId;
+            this.Title = title;
+            this.Subtitle = subtitle;
+            this.Description = description;
+            this.ImagePath = imagePath;
+            this.Content = content;
+        }
+
+        public string UniqueId { get; private set; }
+        public string Title { get; private set; }
+        public string Subtitle { get; private set; }
+        public string Description { get; private set; }
+        public string ImagePath { get; private set; }
+        public string Content { get; private set; }
+
+        public override string ToString()
+        {
+            return this.Title;
+        }
+    }
+
+    /// <summary>
+    /// Modelo de datos de grupo genérico.
+    /// </summary>
+    public class SampleDataGroup
+    {
+        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)
+        {
+            this.UniqueId = uniqueId;
+            this.Title = title;
+            this.Subtitle = subtitle;
+            this.Description = description;
+            this.ImagePath = imagePath;
+            this.Items = new ObservableCollection<SampleDataItem>();
+        }
+
+        public string UniqueId { get; private set; }
+        public string Title { get; private set; }
+        public string Subtitle { get; private set; }
+        public string Description { get; private set; }
+        public string ImagePath { get; private set; }
+        public ObservableCollection<SampleDataItem> Items { get; private set; }
+
+        public override string ToString()
+        {
+            return this.Title;
+        }
+    }
+
+    /// <summary>
+    /// Crea una colección de grupos y elementos con contenido leído de un archivo json estático.
+    /// 
+    /// SampleDataSource se inicializa con los datos leídos de un archivo json estático incluido en 
+    /// el proyecto.  Esto proporciona datos de muestra tanto en el momento del diseño como en el de la ejecución.
+    /// </summary>
+    public sealed class SampleDataSource
+    {
+        private static SampleDataSource _sampleDataSource = new SampleDataSource();
+
+        private ObservableCollection<SampleDataGroup> _groups = new ObservableCollection<SampleDataGroup>();
+        public ObservableCollection<SampleDataGroup> Groups
+        {
+            get { return this._groups; }
+        }
+
+        public static async Task<IEnumerable<SampleDataGroup>> GetGroupsAsync()
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+
+            return _sampleDataSource.Groups;
+        }
+
+        public static async Task<SampleDataGroup> GetGroupAsync(string uniqueId)
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+            // La búsqueda lineal sencilla es aceptable para conjuntos de datos reducidos
+            var matches = _sampleDataSource.Groups.Where((group) => group.UniqueId.Equals(uniqueId));
+            if (matches.Count() == 1) return matches.First();
+            return null;
+        }
+
+        public static async Task<SampleDataItem> GetItemAsync(string uniqueId)
+        {
+            await _sampleDataSource.GetSampleDataAsync();
+            // La búsqueda lineal sencilla es aceptable para conjuntos de datos reducidos
+            var matches = _sampleDataSource.Groups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));
+            if (matches.Count() == 1) return matches.First();
+            return null;
+        }
+
+        private async Task GetSampleDataAsync()
+        {
+            if (this._groups.Count != 0)
+                return;
+
+            Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");
+
+            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
+            string jsonText = await FileIO.ReadTextAsync(file);
+            JsonObject jsonObject = JsonObject.Parse(jsonText);
+            JsonArray jsonArray = jsonObject["Groups"].GetArray();
+
+            foreach (JsonValue groupValue in jsonArray)
+            {
+                JsonObject groupObject = groupValue.GetObject();
+                SampleDataGroup group = new SampleDataGroup(groupObject["UniqueId"].GetString(),
+                                                            groupObject["Title"].GetString(),
+                                                            groupObject["Subtitle"].GetString(),
+                                                            groupObject["ImagePath"].GetString(),
+                                                            groupObject["Description"].GetString());
+
+                foreach (JsonValue itemValue in groupObject["Items"].GetArray())
+                {
+                    JsonObject itemObject = itemValue.GetObject();
+                    group.Items.Add(new SampleDataItem(itemObject["UniqueId"].GetString(),
+                                                       itemObject["Title"].GetString(),
+                                                       itemObject["Subtitle"].GetString(),
+                                                       itemObject["ImagePath"].GetString(),
+                                                       itemObject["Description"].GetString(),
+                                                       itemObject["Content"].GetString()));
+                }
+                this.Groups.Add(group);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml
new file mode 100644 (file)
index 0000000..3c75196
--- /dev/null
@@ -0,0 +1,48 @@
+<Page
+    x:Class="WeatherInformation81.ItemPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WeatherInformation81"
+    xmlns:data="using:WeatherInformation81.Data"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}"
+    d:DataContext="{Binding Groups[0].Items[0], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}"
+    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+    <Page.Transitions>
+        <TransitionCollection>
+            <NavigationThemeTransition>
+                <NavigationThemeTransition.DefaultNavigationTransitionInfo>
+                    <ContinuumNavigationTransitionInfo/>
+                </NavigationThemeTransition.DefaultNavigationTransitionInfo>
+            </NavigationThemeTransition>
+        </TransitionCollection>
+    </Page.Transitions>
+
+    <Grid x:Name="LayoutRoot">
+        <Grid.ChildrenTransitions>
+            <TransitionCollection>
+                <EntranceThemeTransition/>
+            </TransitionCollection>
+        </Grid.ChildrenTransitions>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- Panel de título -->
+        <StackPanel Grid.Row="0" Margin="19,0,0,0">
+            <TextBlock x:Uid="Header" Text="MY APPLICATION" Style="{ThemeResource TitleTextBlockStyle}" Margin="0,12,0,0"/>
+            <TextBlock Text="{Binding Title}" Style="{ThemeResource HeaderTextBlockStyle}" Margin="0,-6.5,0,26.5" CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}" />
+        </StackPanel>
+
+        <!-- 
+            TODO: Debe colocarse el contenido en la siguiente cuadrícula 
+                  para mostrar detalles del elemento actual
+        -->
+        <Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
+
+        </Grid>
+    </Grid>
+</Page>
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/ItemPage.xaml.cs
new file mode 100644 (file)
index 0000000..144af93
--- /dev/null
@@ -0,0 +1,116 @@
+using WeatherInformation81.Common;
+using WeatherInformation81.Data;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using System.Windows.Input;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WeatherInformation81
+{
+    /// <summary>
+    /// Página en la que se muestran los detalles de un único elemento contenido en un grupo.
+    /// </summary>
+    public sealed partial class ItemPage : Page
+    {
+        private readonly NavigationHelper navigationHelper;
+        private readonly ObservableDictionary defaultViewModel = new ObservableDictionary();
+
+        public ItemPage()
+        {
+            this.InitializeComponent();
+
+            this.navigationHelper = new NavigationHelper(this);
+            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
+            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
+        } 
+
+        /// <summary>
+        /// Obtiene el <see cref="NavigationHelper"/> asociado a esta <see cref="Page"/>.
+        /// </summary>
+        public NavigationHelper NavigationHelper
+        {
+            get { return this.navigationHelper; }
+        }
+
+        /// <summary>
+        /// Obtiene el modelo de vista para esta <see cref="Page"/>.
+        /// Este puede cambiarse a un modelo de vista fuertemente tipada.
+        /// </summary>
+        public ObservableDictionary DefaultViewModel
+        {
+            get { return this.defaultViewModel; }
+        }
+
+        /// <summary>
+        /// Rellena la página con el contenido pasado durante la navegación. Cualquier estado guardado se
+        /// proporciona también al crear de nuevo una página a partir de una sesión anterior.
+        /// </summary>
+        /// <param name="sender">
+        /// El origen del evento; suele ser <see cref="NavigationHelper"/>.
+        /// </param>
+        /// <param name="e">Datos de evento que proporcionan tanto el parámetro de navegación pasado a
+        /// <see cref="Frame.Navigate(Type, Object)"/> cuando se solicitó inicialmente esta página y
+        /// un diccionario del estado mantenido por esta página durante una sesión
+        /// anterior.  El estado será null la primera vez que se visite una página.</param>
+        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
+        {
+            // TODO: Crear un modelo de datos adecuado para el dominio del problema para reemplazar los datos de ejemplo.
+            var item = await SampleDataSource.GetItemAsync((string)e.NavigationParameter);
+            this.DefaultViewModel["Item"] = item;
+        }
+
+        /// <summary>
+        /// Mantiene el estado asociado con esta página en caso de que se suspenda la aplicación o
+        /// se descarte la página de la memoria caché de navegación.  Los valores deben cumplir los requisitos
+        /// de serialización de <see cref="SuspensionManager.SessionState"/>.
+        /// </summary>
+        /// <param name="sender">El origen del evento; suele ser <see cref="NavigationHelper"/>.</param>
+        /// <param name="e">Datos de evento que proporcionan un diccionario vacío para rellenar con
+        /// un estado serializable.</param>
+        private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
+        {
+            // TODO: Guardar aquí el estado único de la página.
+        }
+
+        #region Registro de NavigationHelper
+
+        /// <summary>
+        /// Los métodos proporcionados en esta sección se usan simplemente para permitir
+        /// que NavigationHelper responda a los métodos de navegación de la página.
+        /// <para>
+        /// Debe incluirse lógica específica de página en los controladores de eventos para  
+        /// <see cref="NavigationHelper.LoadState"/>
+        /// y <see cref="NavigationHelper.SaveState"/>.
+        /// El parámetro de navegación está disponible en el método LoadState 
+        /// junto con el estado de página mantenido durante una sesión anterior.
+        /// </para>
+        /// </summary>
+        /// <param name="e">Proporciona los datos para el evento y los métodos de navegación
+        /// controladores que no pueden cancelar la solicitud de navegación.</param>
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedTo(e);
+        }
+
+        protected override void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedFrom(e);
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml
new file mode 100644 (file)
index 0000000..fa9d3c3
--- /dev/null
@@ -0,0 +1,46 @@
+<Page
+    x:Class="WeatherInformation81.MainPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WeatherInformation81"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+
+    <Grid x:Name="LayoutRoot">
+
+        <Grid.ChildrenTransitions>
+            <TransitionCollection>
+                <EntranceThemeTransition/>
+            </TransitionCollection>
+        </Grid.ChildrenTransitions>
+
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+        </Grid.RowDefinitions>
+
+        <!-- Panel de título -->
+        <StackPanel Grid.Row="0" Margin="19,0,0,0">
+            <TextBlock Text="MY APPLICATION" Style="{ThemeResource TitleTextBlockStyle}" Margin="0,12,0,0"/>
+            <TextBlock Text="page title" Margin="0,-6.5,0,26.5" Style="{ThemeResource HeaderTextBlockStyle}" CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}"/>
+        </StackPanel>
+
+        <!--TODO: Debe colocarse el contenido en la siguiente cuadrícula-->
+        <Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
+
+        </Grid>
+    </Grid>
+
+    <Page.BottomAppBar>
+        <CommandBar>
+            <AppBarButton x:Uid="LocationAppBarButton" x:Name="LocationAppBarButton" Label="location" Icon="Add" Click="Location_Click" />
+            <AppBarButton x:Uid="SettingsAppBarButton" x:Name="SettingsAppBarButton" Label="settings" Icon="Setting" Click="Settings_Click" />
+            <CommandBar.SecondaryCommands>
+                <AppBarButton x:Uid="LocationSecondaryButton" x:Name="LocationSecondaryButton" Label="location" Click="Location_Click" />
+                <AppBarButton x:Uid="SettingsSecondaryButton" x:Name="SettingsSecondaryButton" Label="settings" Click="Settings_Click" />
+            </CommandBar.SecondaryCommands>
+        </CommandBar>
+    </Page.BottomAppBar>
+</Page>
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/MainPage.xaml.cs
new file mode 100644 (file)
index 0000000..7fae299
--- /dev/null
@@ -0,0 +1,121 @@
+using WeatherInformation81.Common;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.ViewManagement;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de elemento Página básica está documentada en http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace WeatherInformation81
+{
+    /// <summary>
+    /// Página vacía que se puede usar de forma independiente o a la que se puede navegar dentro de un objeto Frame.
+    /// </summary>
+    public sealed partial class MainPage : Page
+    {
+        private NavigationHelper navigationHelper;
+        private ObservableDictionary defaultViewModel = new ObservableDictionary();
+
+        public MainPage()
+        {
+            this.InitializeComponent();
+
+            this.navigationHelper = new NavigationHelper(this);
+            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
+            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
+        }
+
+        /// <summary>
+        /// Obtiene el <see cref="NavigationHelper"/> asociado a esta <see cref="Page"/>.
+        /// </summary>
+        public NavigationHelper NavigationHelper
+        {
+            get { return this.navigationHelper; }
+        }
+
+        /// <summary>
+        /// Obtiene el modelo de vista para esta <see cref="Page"/>.
+        /// Este puede cambiarse a un modelo de vista fuertemente tipada.
+        /// </summary>
+        public ObservableDictionary DefaultViewModel
+        {
+            get { return this.defaultViewModel; }
+        }
+
+        /// <summary>
+        /// Rellena la página con el contenido pasado durante la navegación.  Cualquier estado guardado se
+        /// proporciona también al crear de nuevo una página a partir de una sesión anterior.
+        /// </summary>
+        /// <param name="sender">
+        /// El origen del evento; suele ser <see cref="NavigationHelper"/>
+        /// </param>
+        /// <param name="e">Datos de evento que proporcionan tanto el parámetro de navegación pasado a
+        /// <see cref="Frame.Navigate(Type, Object)"/> cuando se solicitó inicialmente esta página y
+        /// un diccionario del estado mantenido por esta página durante una sesión
+        /// anterior. El estado será null la primera vez que se visite una página.</param>
+        private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
+        {
+        }
+
+        /// <summary>
+        /// Mantiene el estado asociado con esta página en caso de que se suspenda la aplicación o
+        /// se descarte la página de la memoria caché de navegación.  Los valores deben cumplir los requisitos
+        /// de serialización de <see cref="SuspensionManager.SessionState"/>.
+        /// </summary>
+        /// <param name="sender">El origen del evento; suele ser <see cref="NavigationHelper"/></param>
+        /// <param name="e">Datos de evento que proporcionan un diccionario vacío para rellenar con
+        /// un estado serializable.</param>
+        private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
+        {
+        }
+
+        #region Registro de NavigationHelper
+
+        /// <summary>
+        /// Los métodos proporcionados en esta sección se usan simplemente para permitir
+        /// que NavigationHelper responda a los métodos de navegación de la página.
+        /// <para>
+        /// Debe incluirse lógica específica de página en los controladores de eventos para 
+        /// <see cref="NavigationHelper.LoadState"/>
+        /// y <see cref="NavigationHelper.SaveState"/>.
+        /// El parámetro de navegación está disponible en el método LoadState 
+        /// junto con el estado de página mantenido durante una sesión anterior.
+        /// </para>
+        /// </summary>
+        /// <param name="e">Proporciona los datos para el evento y los métodos de navegación
+        /// controladores que no pueden cancelar la solicitud de navegación.</param>
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedTo(e);
+        }
+
+        protected override void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedFrom(e);
+        }
+
+        #endregion
+
+        private void Location_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void Settings_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Package.appxmanifest b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Package.appxmanifest
new file mode 100644 (file)
index 0000000..cdb5425
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
+  <Identity Name="4ab3c539-880c-4718-afcc-ddc0ecd29cf6" Publisher="CN=Gustavo" Version="1.0.0.0" />
+  <mp:PhoneIdentity PhoneProductId="4ab3c539-880c-4718-afcc-ddc0ecd29cf6" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
+  <Properties>
+    <DisplayName>WeatherInformation81</DisplayName>
+    <PublisherDisplayName>Gustavo Martin Morcuende</PublisherDisplayName>
+    <Logo>Assets\StoreLogo.png</Logo>
+  </Properties>
+  <Prerequisites>
+    <OSMinVersion>6.3.1</OSMinVersion>
+    <OSMaxVersionTested>6.3.1</OSMaxVersionTested>
+  </Prerequisites>
+  <Resources>
+    <Resource Language="x-generate" />
+  </Resources>
+  <Applications>
+    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="WeatherInformation81.App">
+      <m3:VisualElements DisplayName="WeatherInformation81" Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\SmallLogo.png" Description="WeatherInformation81" ForegroundText="light" BackgroundColor="transparent">
+        <m3:DefaultTile Wide310x150Logo="Assets\WideLogo.png" Square71x71Logo="Assets\Square71x71Logo.png">
+        </m3:DefaultTile>
+        <m3:SplashScreen Image="Assets\SplashScreen.png" />
+        <m3:InitialRotationPreference>
+          <m3:Rotation Preference="portrait" />
+          <m3:Rotation Preference="landscape" />
+          <m3:Rotation Preference="landscapeFlipped" />
+        </m3:InitialRotationPreference>
+      </m3:VisualElements>
+    </Application>
+  </Applications>
+  <Capabilities>
+    <Capability Name="internetClientServer" />
+    <DeviceCapability Name="location" />
+  </Capabilities>
+</Package>
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml
new file mode 100644 (file)
index 0000000..bbedbdc
--- /dev/null
@@ -0,0 +1,105 @@
+<Page
+    x:Class="WeatherInformation81.PivotPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:WeatherInformation81"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:data="using:WeatherInformation81.Data"
+    mc:Ignorable="d"
+    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
+    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+    <Page.Transitions>
+        <TransitionCollection>
+            <NavigationThemeTransition>
+                <NavigationThemeTransition.DefaultNavigationTransitionInfo>
+                    <CommonNavigationTransitionInfo IsStaggeringEnabled="True"/>
+                </NavigationThemeTransition.DefaultNavigationTransitionInfo>
+            </NavigationThemeTransition>
+        </TransitionCollection>
+    </Page.Transitions>
+
+    <Grid>
+        <Pivot x:Uid="Pivot" Title="MY APPLICATION" x:Name="pivot" CommonNavigationTransitionInfo.IsStaggerElement="True">
+            <!--Elemento Pivot uno-->
+            <PivotItem
+                x:Uid="PivotItem1"
+                Margin="19,14.5,0,0"
+                Header="first"
+                DataContext="{Binding FirstGroup}"
+                d:DataContext="{Binding Groups[0], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}"
+                CommonNavigationTransitionInfo.IsStaggerElement="True">
+                <!--Lista de líneas dobles con ajuste de texto-->
+                <ListView
+                    ItemsSource="{Binding Items}"
+                    IsItemClickEnabled="True"
+                    ItemClick="ItemView_ItemClick"
+                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
+                    <ListView.ItemTemplate>
+                        <DataTemplate>
+                            <StackPanel Margin="0,0,0,9.5">
+                                <TextBlock
+                                    Text="{Binding Title}"
+                                    TextWrapping="Wrap"
+                                    Pivot.SlideInAnimationGroup="1"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{ThemeResource ListViewItemTextBlockStyle}"
+                                    Margin="0,0,19,0"/>
+                                <TextBlock
+                                    Text="{Binding Description}"
+                                    TextWrapping="WrapWholeWords"
+                                    Pivot.SlideInAnimationGroup="2" 
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True" 
+                                    Style="{ThemeResource ListViewItemContentTextBlockStyle}"
+                                    Margin="0,0,19,0"/>
+                            </StackPanel>
+                        </DataTemplate>
+                    </ListView.ItemTemplate>
+                </ListView>
+            </PivotItem>
+
+            <!--Elemento Pivot dos-->
+            <PivotItem
+                x:Uid="PivotItem2"
+                Margin="19,14.5,0,0"
+                Header="second"
+                DataContext="{Binding SecondGroup}"
+                d:DataContext="{Binding Groups[1], Source={d:DesignData Source=/DataModel/SampleData.json, Type=data:SampleDataSource}}">
+                <!--Lista de líneas dobles sin ajuste de texto-->
+                <ListView
+                    ItemsSource="{Binding Items}"
+                    IsItemClickEnabled="True"
+                    ItemClick="ItemView_ItemClick"
+                    Loaded="SecondPivot_Loaded"
+                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
+                    <ListView.ItemTemplate>
+                        <DataTemplate>
+                            <StackPanel Margin="0,0,0,9.5">
+                                <TextBlock
+                                    Text="{Binding Title}"
+                                    Pivot.SlideInAnimationGroup="1"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{StaticResource ListViewItemTextBlockStyle}"/>
+                                <TextBlock
+                                    Text="{Binding Description}"
+                                    Pivot.SlideInAnimationGroup="2"
+                                    CommonNavigationTransitionInfo.IsStaggerElement="True"
+                                    Style="{StaticResource ListViewItemContentTextBlockStyle}"/>
+                            </StackPanel>
+                        </DataTemplate>
+                    </ListView.ItemTemplate>
+                </ListView>
+            </PivotItem>
+        </Pivot>
+    </Grid>
+
+    <Page.BottomAppBar>
+        <CommandBar>
+            <AppBarButton x:Uid="AddAppBarButton" x:Name="AddAppBarButton" Label="add" Icon="Add" Click="AddAppBarButton_Click" />
+            <CommandBar.SecondaryCommands>
+                <AppBarButton x:Uid="SecondaryButton1" x:Name="SecondaryButton1" Label="secondary command 1" />
+                <AppBarButton x:Uid="SecondaryButton2" x:Name="SecondaryButton2" Label="secondary command 2" />
+            </CommandBar.SecondaryCommands>
+        </CommandBar>
+    </Page.BottomAppBar>
+</Page>
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/PivotPage.xaml.cs
new file mode 100644 (file)
index 0000000..36c83d5
--- /dev/null
@@ -0,0 +1,168 @@
+using WeatherInformation81.Common;
+using WeatherInformation81.Data;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel.Resources;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// La plantilla de aplicación dinámica está documentada en http://go.microsoft.com/fwlink/?LinkID=391641
+
+namespace WeatherInformation81
+{
+    public sealed partial class PivotPage : Page
+    {
+        private const string FirstGroupName = "FirstGroup";
+        private const string SecondGroupName = "SecondGroup";
+
+        private readonly NavigationHelper navigationHelper;
+        private readonly ObservableDictionary defaultViewModel = new ObservableDictionary();
+        private readonly ResourceLoader resourceLoader = ResourceLoader.GetForCurrentView("Resources");
+
+        public PivotPage()
+        {
+            this.InitializeComponent();
+
+            this.NavigationCacheMode = NavigationCacheMode.Required;
+
+            this.navigationHelper = new NavigationHelper(this);
+            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
+            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
+        }
+
+        /// <summary>
+        /// Obtiene el <see cref="NavigationHelper"/> asociado a esta <see cref="Page"/>.
+        /// </summary>
+        public NavigationHelper NavigationHelper
+        {
+            get { return this.navigationHelper; }
+        }
+
+        /// <summary>
+        /// Obtiene el modelo de vista para esta <see cref="Page"/>.
+        /// Este puede cambiarse a un modelo de vista fuertemente tipada.
+        /// </summary>
+        public ObservableDictionary DefaultViewModel
+        {
+            get { return this.defaultViewModel; }
+        }
+
+        /// <summary>
+        /// Rellena la página con el contenido pasado durante la navegación. Cualquier estado guardado se
+        /// proporciona también al crear de nuevo una página a partir de una sesión anterior.
+        /// </summary>
+        /// <param name="sender">
+        /// El origen del evento; suele ser <see cref="NavigationHelper"/>.
+        /// </param>
+        /// <param name="e">Datos de evento que proporcionan tanto el parámetro de navegación pasado a
+        /// <see cref="Frame.Navigate(Type, Object)"/> cuando se solicitó inicialmente esta página y
+        /// un diccionario del estado mantenido por esta página durante una sesión
+        /// anterior. El estado será null la primera vez que se visite una página.</param>
+        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
+        {
+            // TODO: Crear un modelo de datos adecuado para el dominio del problema para reemplazar los datos de ejemplo
+            var sampleDataGroup = await SampleDataSource.GetGroupAsync("Group-1");
+            this.DefaultViewModel[FirstGroupName] = sampleDataGroup;
+        }
+
+        /// <summary>
+        /// Mantiene el estado asociado con esta página en caso de que se suspenda la aplicación o
+        /// se descarte la página de la memoria caché de navegación. Los valores deben cumplir los requisitos
+        /// de serialización de <see cref="SuspensionManager.SessionState"/>.
+        /// </summary>
+        /// <param name="sender">El origen del evento; suele ser <see cref="NavigationHelper"/>.</param>
+        /// <param name="e">Datos de evento que proporcionan un diccionario vacío para rellenar con
+        /// un estado serializable.</param>
+        private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
+        {
+            // TODO: Guardar aquí el estado único de la página.
+        }
+
+        /// <summary>
+        /// Agrega un elemento a la lista cuando se hace clic en el botón de la barra de la aplicación.
+        /// </summary>
+        private void AddAppBarButton_Click(object sender, RoutedEventArgs e)
+        {
+            string groupName = this.pivot.SelectedIndex == 0 ? FirstGroupName : SecondGroupName;
+            var group = this.DefaultViewModel[groupName] as SampleDataGroup;
+            var nextItemId = group.Items.Count + 1;
+            var newItem = new SampleDataItem(
+                string.Format(CultureInfo.InvariantCulture, "Group-{0}-Item-{1}", this.pivot.SelectedIndex + 1, nextItemId),
+                string.Format(CultureInfo.CurrentCulture, this.resourceLoader.GetString("NewItemTitle"), nextItemId),
+                string.Empty,
+                string.Empty,
+                this.resourceLoader.GetString("NewItemDescription"),
+                string.Empty);
+
+            group.Items.Add(newItem);
+
+            // Desplazar el elemento nuevo en la vista.
+            var container = this.pivot.ContainerFromIndex(this.pivot.SelectedIndex) as ContentControl;
+            var listView = container.ContentTemplateRoot as ListView;
+            listView.ScrollIntoView(newItem, ScrollIntoViewAlignment.Leading);
+        }
+
+        /// <summary>
+        /// Se invoca al hacer clic en un elemento contenido en una sección.
+        /// </summary>
+        private void ItemView_ItemClick(object sender, ItemClickEventArgs e)
+        {
+            // Navegar a la página de destino adecuada y configurar la nueva página
+            // al pasar la información requerida como parámetro de navegación
+            var itemId = ((SampleDataItem)e.ClickedItem).UniqueId;
+            if (!Frame.Navigate(typeof(ItemPage), itemId))
+            {
+                throw new Exception(this.resourceLoader.GetString("NavigationFailedExceptionMessage"));
+            }
+        }
+
+        /// <summary>
+        /// Carga el contenido del segundo elemento dinámico cuando se desplaza en la vista.
+        /// </summary>
+        private async void SecondPivot_Loaded(object sender, RoutedEventArgs e)
+        {
+            var sampleDataGroup = await SampleDataSource.GetGroupAsync("Group-2");
+            this.DefaultViewModel[SecondGroupName] = sampleDataGroup;
+        }
+
+        #region Registro de NavigationHelper
+
+        /// <summary>
+        /// Los métodos proporcionados en esta sección se usan simplemente para permitir
+        /// que NavigationHelper responda a los métodos de navegación de la página.
+        /// <para>
+        /// Debe incluirse lógica específica de página en los controladores de eventos para 
+        /// <see cref="NavigationHelper.LoadState"/>
+        /// y <see cref="NavigationHelper.SaveState"/>.
+        /// El parámetro de navegación está disponible en el método LoadState 
+        /// junto con el estado de página mantenido durante una sesión anterior.
+        /// </para>
+        /// </summary>
+        /// <param name="e">Proporciona los datos para el evento y los métodos de navegación
+        /// controladores que no pueden cancelar la solicitud de navegación.</param>
+        protected override void OnNavigatedTo(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedTo(e);
+        }
+
+        protected override void OnNavigatedFrom(NavigationEventArgs e)
+        {
+            this.navigationHelper.OnNavigatedFrom(e);
+        }
+
+        #endregion
+    }
+}
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Properties/AssemblyInfo.cs b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..38f8598
--- /dev/null
@@ -0,0 +1,29 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente 
+// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("WeatherInformation81")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WeatherInformation81")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+//      Versión principal
+//      Versión secundaria 
+//      Número de compilación
+//      Revisión
+//
+// Puede especificar todos los valores o establecer como predeterminados los números de compilación y de revisión 
+// mediante el carácter '*', como se muestra a continuación:
+// [ensamblado: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Strings/en/Resources.resw b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/Strings/en/Resources.resw
new file mode 100644 (file)
index 0000000..7c5ded6
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="AddAppBarButton.Label" xml:space="preserve">
+    <value>agregar</value>
+  </data>
+  <data name="Header.Text" xml:space="preserve">
+    <value>MI APLICACIÓN</value>
+  </data>
+  <data name="LocationAppBarButton" xml:space="preserve">
+    <value>location</value>
+  </data>
+  <data name="NavigationFailedExceptionMessage" xml:space="preserve">
+    <value>Error de navegación.</value>
+  </data>
+  <data name="NewItemDescription" xml:space="preserve">
+    <value>Descripción del elemento: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.</value>
+  </data>
+  <data name="NewItemTitle" xml:space="preserve">
+    <value>Título de elemento: {0}</value>
+  </data>
+  <data name="Pivot.Title" xml:space="preserve">
+    <value>MI APLICACIÓN</value>
+  </data>
+  <data name="PivotItem1.Header" xml:space="preserve">
+    <value>primero</value>
+  </data>
+  <data name="PivotItem2.Header" xml:space="preserve">
+    <value>segundo</value>
+  </data>
+  <data name="SecondaryButton1.Label" xml:space="preserve">
+    <value>comando secundario 1</value>
+  </data>
+  <data name="SecondaryButton2.Label" xml:space="preserve">
+    <value>comando secundario 2</value>
+  </data>
+  <data name="SettingsAppBarButton" xml:space="preserve">
+    <value>settings</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/WeatherInformation81.csproj b/WindowsPhone/WP81/WeatherInformation81/WeatherInformation81/WeatherInformation81.csproj
new file mode 100644 (file)
index 0000000..0faed5b
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{49B8FC95-AF28-453D-B9EA-F8EF0AF39E8B}</ProjectGuid>
+    <OutputType>AppContainerExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>WeatherInformation81</RootNamespace>
+    <AssemblyName>WeatherInformation81</AssemblyName>
+    <DefaultLanguage>en</DefaultLanguage>
+    <TargetPlatformVersion>8.1</TargetPlatformVersion>
+    <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\ARM\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+    <OutputPath>bin\ARM\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+    <Page Include="ItemPage.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="MainPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="PivotPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Common\NavigationHelper.cs" />
+    <Compile Include="Common\ObservableDictionary.cs" />
+    <Compile Include="Common\RelayCommand.cs" />
+    <Compile Include="Common\SuspensionManager.cs" />
+    <Compile Include="DataModel\SampleDataSource.cs" />
+    <Compile Include="ItemPage.xaml.cs">
+      <DependentUpon>ItemPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="MainPage.xaml.cs">
+      <DependentUpon>MainPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="PivotPage.xaml.cs">
+      <DependentUpon>PivotPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <AppxManifest Include="Package.appxmanifest">
+      <SubType>Designer</SubType>
+    </AppxManifest>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Assets\Logo.scale-240.png" />
+    <Content Include="Assets\SmallLogo.scale-240.png" />
+    <Content Include="Assets\SplashScreen.scale-240.png" />
+    <Content Include="Assets\Square71x71Logo.scale-240.png" />
+    <Content Include="Assets\StoreLogo.scale-240.png" />
+    <Content Include="Assets\WideLogo.scale-240.png" />
+    <Content Include="Common\ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="DataModel\SampleData.json" />
+    <PRIResource Include="Strings\en\Resources.resw">
+      <SubType>Designer</SubType>
+    </PRIResource>
+  </ItemGroup>
+  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0' ">
+    <VisualStudioVersion>12.0</VisualStudioVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetPlatformIdentifier)' == '' ">
+    <TargetPlatformIdentifier>WindowsPhoneApp</TargetPlatformIdentifier>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation.sln b/WindowsPhone/WeatherInformation/WeatherInformation.sln
deleted file mode 100644 (file)
index 54c1b02..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30110.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeatherInformation", "WeatherInformation\WeatherInformation.csproj", "{71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|ARM = Debug|ARM
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|ARM = Release|ARM
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.ActiveCfg = Debug|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.Build.0 = Debug|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|ARM.Deploy.0 = Debug|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.ActiveCfg = Debug|x86
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.Build.0 = Debug|x86
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Debug|x86.Deploy.0 = Debug|x86
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|Any CPU.Deploy.0 = Release|Any CPU
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.ActiveCfg = Release|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.Build.0 = Release|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|ARM.Deploy.0 = Release|ARM
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.ActiveCfg = Release|x86
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.Build.0 = Release|x86
-               {71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}.Release|x86.Deploy.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/App.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/App.xaml
deleted file mode 100644 (file)
index 525c2cd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<Application
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels" mc:Ignorable="d"
-    x:Class="WeatherInformation.App">
-
-    <!--Recursos de la aplicación-->
-    <Application.Resources>
-        <local:LocalizedStrings xmlns:local="clr-namespace:WeatherInformation" x:Key="LocalizedStrings"/>
-    </Application.Resources>
-
-    <Application.ApplicationLifetimeObjects>
-        <!--Objeto requerido que controla los eventos de duración de la aplicación-->
-        <shell:PhoneApplicationService
-            Launching="Application_Launching" Closing="Application_Closing"
-            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
-    </Application.ApplicationLifetimeObjects>
-
-</Application>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/App.xaml.cs b/WindowsPhone/WeatherInformation/WeatherInformation/App.xaml.cs
deleted file mode 100644 (file)
index 5ca98eb..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using System.Threading; 
-using System.Globalization; 
-using WeatherInformation.Resources;
-using WeatherInformation.Model;
-using WeatherInformation.Model.Services;
-using WeatherInformation.Model.JsonDataParser;
-
-namespace WeatherInformation
-{
-    public partial class App : Application
-    {
-        // Locale to force CurrentCulture to in InitializeLanguage(). 
-        // Use "qps-PLOC" to deploy pseudolocalized strings. 
-        // Use "" to let user Phone Language selection determine locale. 
-        // public static String appForceCulture = "qps-PLOC";
-        private const String appForceCulture = "en"; 
-
-        // Declare a private variable to store application state.
-        private WeatherData _remoteWeatherData;
-
-        private readonly Object _lock = new Object();
-        // Declare a public property to access the application data variable.
-        public WeatherData ApplicationDataObject
-        {
-            get
-            {
-                lock (_lock)
-                {
-                    return _remoteWeatherData;
-                }
-            }
-            set
-            {
-                lock (_lock)
-                {
-                    if (value != _remoteWeatherData)
-                    {
-                        _remoteWeatherData = value;
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Proporcionar acceso sencillo al marco raíz de la aplicación telefónica.
-        /// </summary>
-        /// <returns>Marco raíz de la aplicación telefónica.</returns>
-        public static PhoneApplicationFrame RootFrame { get; private set; }
-
-        /// <summary>
-        /// Constructor para el objeto Application.
-        /// </summary>
-        public App()
-        {
-            // Controlador global para excepciones no detectadas.
-            UnhandledException += Application_UnhandledException;
-
-            // Inicialización XAML estándar
-            InitializeComponent();
-
-            // Inicialización especifica del teléfono
-            InitializePhoneApplication();
-
-            // Inicialización del idioma
-            InitializeLanguage();
-
-            // Create the database if it does not exist.
-            using (LocationDataContext db = new LocationDataContext(LocationDataContext.DBConnectionString))
-            {
-                if (db.DatabaseExists() == false)
-                {
-                    //Create the database
-                    db.CreateDatabase();
-                }
-            }
-
-            // Mostrar información de generación de perfiles gráfica durante la depuración.
-            if (Debugger.IsAttached)
-            {
-                // Mostrar los contadores de velocidad de marcos actual
-                Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
-                // Mostrar las áreas de la aplicación que se están volviendo a dibujar en cada marco.
-                //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
-                // Habilitar el modo de visualización de análisis de no producción,
-                // que muestra áreas de una página que se entregan a la GPU con una superposición coloreada.
-                //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
-                // Impedir que la pantalla se apague mientras se realiza la depuración deshabilitando
-                // la detección de inactividad de la aplicación.
-                // Precaución: solo debe usarse en modo de depuración. Las aplicaciones que deshabiliten la detección de inactividad del usuario seguirán en ejecución
-                // y consumirán energía de la batería cuando el usuario no esté usando el teléfono.
-                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
-            }
-        }
-
-        // Código para ejecutar cuando la aplicación se inicia (p.ej. a partir de Inicio)
-        // Este código no se ejecutará cuando la aplicación se reactive
-        private void Application_Launching(object sender, LaunchingEventArgs e)
-        {
-        }
-
-        // Código para ejecutar cuando la aplicación se activa (se trae a primer plano)
-        // Este código no se ejecutará cuando la aplicación se inicie por primera vez
-        // Coming from TOMBSTONED or DORMANT
-        private void Application_Activated(object sender, ActivatedEventArgs e)
-        {
-            if (e.IsApplicationInstancePreserved)
-            {
-                // Coming from DORMANT
-                return;
-            }
-
-            // Coming from TOMBSTONED
-            WeatherData weatherData = null;
-
-            // Check to see if the key for the application state data is in the State dictionary.
-            string jsonForecast = null;
-            string jsonCurrent = null;
-            string city = null;
-            string country = null;
-            if (PhoneApplicationService.Current.State.ContainsKey("JSONForecast") &&
-                PhoneApplicationService.Current.State.ContainsKey("JSONCurrent") &&
-                PhoneApplicationService.Current.State.ContainsKey("City") &&
-                PhoneApplicationService.Current.State.ContainsKey("Country"))
-            {
-                // If it exists, assign the data to the application member variable.
-                jsonForecast = PhoneApplicationService.Current.State["JSONForecast"] as string;
-
-                // If it exists, assign the data to the application member variable.
-                jsonCurrent = PhoneApplicationService.Current.State["JSONCurrent"] as string;
-
-                // If it exists, assign the data to the application member variable.
-                city = PhoneApplicationService.Current.State["City"] as string;
-
-                // If it exists, assign the data to the application member variable.
-                country = PhoneApplicationService.Current.State["Country"] as string;
-            }
-
-            if (!string.IsNullOrEmpty(jsonCurrent) && !string.IsNullOrEmpty(jsonForecast) &&
-                !string.IsNullOrEmpty(city) && !string.IsNullOrEmpty(country))
-            {
-                var parser = new ServiceParser(new JsonParser());
-                weatherData = parser.WeatherDataParser(jsonForecast, jsonCurrent, city, country);
-            }
-
-            ApplicationDataObject = weatherData;
-        }
-
-        // Código para ejecutar cuando la aplicación se desactiva (se envía a segundo plano)
-        // Este código no se ejecutará cuando la aplicación se cierre
-        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
-        {
-            // If there is data in the application member variable...
-            var weatherData = ApplicationDataObject;
-            if (weatherData != null)
-            {
-                if (!string.IsNullOrEmpty(weatherData.JSONCurrent) &&
-                    !string.IsNullOrEmpty(weatherData.JSONForecast))
-                {
-                    // Store it in the State dictionary.
-                    PhoneApplicationService.Current.State["JSONForecast"] = weatherData.JSONForecast;
-
-                    // Store it in the State dictionary.
-                    PhoneApplicationService.Current.State["JSONCurrent"] = weatherData.JSONCurrent;
-
-                    // Store it in the State dictionary.
-                    PhoneApplicationService.Current.State["City"] = weatherData.City;
-
-                    // Store it in the State dictionary.
-                    PhoneApplicationService.Current.State["Country"] = weatherData.Country;
-                }
-            }
-        }
-
-        // Código para ejecutar cuando la aplicación se cierra (p.ej., al hacer clic en Atrás)
-        // Este código no se ejecutará cuando la aplicación se desactive
-        private void Application_Closing(object sender, ClosingEventArgs e)
-        {
-            // Asegurarse de que el estado de la aplicación requerida persiste aquí.
-            // The application will not be tombstoned, so save only to isolated storage.
-        }
-
-        // Código para ejecutar si hay un error de navegación
-        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // Ha habido un error de navegación; interrumpir el depurador
-                Debugger.Break();
-            }
-        }
-
-        // Código para ejecutar en excepciones no controladas
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            if (Debugger.IsAttached)
-            {
-                // Se ha producido una excepción no controlada; interrumpir el depurador
-                Debugger.Break();
-            }
-        }
-
-        #region Inicialización de la aplicación telefónica
-
-        // Evitar inicialización doble
-        private bool phoneApplicationInitialized = false;
-
-        // No agregar ningún código adicional a este método
-        private void InitializePhoneApplication()
-        {
-            if (phoneApplicationInitialized)
-                return;
-
-            // Crear el marco pero no establecerlo como RootVisual todavía; esto permite que
-            // la pantalla de presentación permanezca activa hasta que la aplicación esté lista para la presentación.
-            RootFrame = new PhoneApplicationFrame();
-            RootFrame.Navigated += CompleteInitializePhoneApplication;
-
-            // Controlar errores de navegación
-            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
-            // Controlar solicitudes de restablecimiento para borrar la pila de retroceso
-            RootFrame.Navigated += CheckForResetNavigation;
-
-            // Asegurarse de que no volvemos a inicializar
-            phoneApplicationInitialized = true;
-        }
-
-        // No agregar ningún código adicional a este método
-        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
-        {
-            // Establecer el objeto visual raíz para permitir que la aplicación se presente
-            if (RootVisual != RootFrame)
-                RootVisual = RootFrame;
-
-            // Quitar este controlador porque ya no es necesario
-            RootFrame.Navigated -= CompleteInitializePhoneApplication;
-        }
-
-        private void CheckForResetNavigation(object sender, NavigationEventArgs e)
-        {
-            // Si la aplicación ha recibido una navegación 'reset', tenemos que comprobarlo
-            // en la siguiente navegación para ver si se debe restablecer la pila de páginas
-            if (e.NavigationMode == NavigationMode.Reset)
-                RootFrame.Navigated += ClearBackStackAfterReset;
-        }
-
-        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
-        {
-            // Anular registro del evento para que no se vuelva a llamar
-            RootFrame.Navigated -= ClearBackStackAfterReset;
-
-            // Borrar solo la pila de navegaciones 'new' (hacia delante) y 'refresh'
-            if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
-                return;
-
-            // Por coherencia de la IU, borrar toda la pila de páginas
-            while (RootFrame.RemoveBackEntry() != null)
-            {
-                ; // no hacer nada
-            }
-        }
-
-        #endregion
-
-        // Inicializar la fuente y la dirección de flujo de la aplicación según se define en sus cadenas de recursos traducidas.
-        //
-        // Para asegurarse de que la fuente de la aplicación está alineada con sus idiomas admitidos y que
-        // FlowDirection para todos esos idiomas sigue su dirección tradicional, ResourceLanguage
-        // y ResourceFlowDirection se debe inicializar en cada archivo resx para que estos valores coincidan con ese
-        // referencia cultural del archivo. Por ejemplo:
-        //
-        // AppResources.es-ES.resx
-        //    El valor de ResourceLanguage debe ser "es-ES"
-        //    El valor de ResourceFlowDirection debe ser "LeftToRight"
-        //
-        // AppResources.ar-SA.resx
-        //     El valor de ResourceLanguage debe ser "ar-SA"
-        //     El valor de ResourceFlowDirection debe ser "RightToLeft"
-        //
-        // Para obtener más información sobre cómo traducir aplicaciones para Windows Phone, consulta http://go.microsoft.com/fwlink/?LinkId=262072.
-        //
-        private void InitializeLanguage()
-        {
-            try
-            {
-                // Force CurrentUICulture to locale defined by appForceCulture.
-                // An empty string allows the user's Phone Language setting to 
-                // determine the locale.
-                //if (Debugger.IsAttached && String.IsNullOrWhiteSpace(appForceCulture) == false)
-                //{
-                Thread.CurrentThread.CurrentCulture = new CultureInfo(appForceCulture);
-                Thread.CurrentThread.CurrentUICulture = new CultureInfo(appForceCulture);
-                //}
-
-                // Establecer la fuente para que coincida con el idioma definido por
-                // Cadena de recursos ResourceLanguage para cada idioma admitido.
-                //
-                // Recurrir a la fuente del idioma neutro si el idioma
-                // del teléfono no se admite.
-                //
-                // Si se produce un error del compilador, falta ResourceLanguage
-                // el archivo de recursos.
-                RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
-                // Establecer FlowDirection de todos los elementos del marco raíz según
-                // en la cadena de recursos ResourceFlowDirection para cada
-                // idioma admitido.
-                //
-                // Si se produce un error del compilador, falta ResourceFlowDirection
-                // el archivo de recursos.
-                FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
-                RootFrame.FlowDirection = flow;
-            }
-            catch
-            {
-                // Si se detecta aquí una excepción, lo más probable es que se deba a
-                // ResourceLanguage no se ha establecido correctamente en un idioma admitido
-                // o ResourceFlowDirection se ha establecido en un valor distinto de LeftToRight
-                // o RightToLeft.
-
-                if (Debugger.IsAttached)
-                {
-                    Debugger.Break();
-                }
-
-                throw;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png
deleted file mode 100644 (file)
index f7d2e97..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png
deleted file mode 100644 (file)
index 7d95d4e..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644 (file)
index e0c59ac..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644 (file)
index e93b89d..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644 (file)
index 550b1b5..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png
deleted file mode 100644 (file)
index 686e6b5..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileMediumLarge.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png
deleted file mode 100644 (file)
index d4b5ede..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Assets/Tiles/IconicTileSmall.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/add.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/add.png
deleted file mode 100644 (file)
index 4b524d6..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/add.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/feature.settings.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/feature.settings.png
deleted file mode 100644 (file)
index 8efcfc2..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/feature.settings.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear.png
deleted file mode 100644 (file)
index 73a5bbd..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear_night.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear_night.png
deleted file mode 100644 (file)
index 2c60054..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_clear_night.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png
deleted file mode 100644 (file)
index 2d38702..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png
deleted file mode 100644 (file)
index 333afa7..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_few_clouds_night.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_fog.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_fog.png
deleted file mode 100644 (file)
index 1bebc54..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_fog.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_overcast.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_overcast.png
deleted file mode 100644 (file)
index e3101eb..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_overcast.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png
deleted file mode 100644 (file)
index b0ac4b7..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_severe_alert.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers.png
deleted file mode 100644 (file)
index 6a1860c..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png
deleted file mode 100644 (file)
index 97d0f77..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_showers_scattered.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_snow.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_snow.png
deleted file mode 100644 (file)
index ac714cc..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_snow.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_storm.png b/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_storm.png
deleted file mode 100644 (file)
index c339221..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Images/weather_storm.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/LocalizedStrings.cs b/WindowsPhone/WeatherInformation/WeatherInformation/LocalizedStrings.cs
deleted file mode 100644 (file)
index f0b3b30..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using WeatherInformation.Resources;
-
-namespace WeatherInformation
-{
-    /// <summary>
-    /// Proporciona acceso a los recursos de cadena.
-    /// </summary>
-    public class LocalizedStrings
-    {
-        private static AppResources _localizedResources = new AppResources();
-
-        public AppResources LocalizedResources { get { return _localizedResources; } }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml
deleted file mode 100644 (file)
index 5d73b4e..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="WeatherInformation.MainPage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d"
-    d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
-    shell:SystemTray.IsVisible="True">
-
-    <phone:PhoneApplicationPage.ApplicationBar>
-        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False" Mode="Default">
-            <shell:ApplicationBar.MenuItems>
-                <shell:ApplicationBarMenuItem Click="Location_Click" Text="Location"/>
-                <shell:ApplicationBarMenuItem Click="Settings_Click" Text="Settings"/>
-            </shell:ApplicationBar.MenuItems>
-            <shell:ApplicationBarIconButton Click="Location_Click" IconUri="/Images/add.png"  Text="Location" />
-            <shell:ApplicationBarIconButton Click="Settings_Click" IconUri="/Images/feature.settings.png" Text="Settings"/>
-        </shell:ApplicationBar>
-    </phone:PhoneApplicationPage.ApplicationBar>
-    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
-    <Grid x:Name="LayoutRoot" Background="Transparent">
-
-        <!-- NOTA PARA LA TRADUCCIÓN:
-            Para traducir las cadenas mostradas, copia sus valores a las claves con el nombre
-            correspondiente en el archivo de recursos del idioma neutro (AppResources.resx) de la aplicación y
-            reemplaza el valor de texto codificado de forma rígida entre las comillas de los atributos
-            con la cláusula de enlace cuya ruta de acceso apunte a ese nombre de cadena.
-
-            Por ejemplo:
-
-                Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
-
-            Este enlace apunta al recurso de cadena de la plantilla denominado "ApplicationTitle".
-
-            Al agregar idiomas admitidos en la pestaña Propiedades del proyecto se creará un
-            nuevo archivo resx por idioma que puede contener los valores traducidos de las
-            cadenas de la interfaz de usuario. El enlace de estos ejemplos hará que el valor de los atributos
-            se tome del archivo .resx correspondiente al valor de
-            CurrentUICulture de la aplicación en tiempo de ejecución.
-         -->
-
-        <!--Control Pivot-->
-        <phone:Pivot x:Name="TitleTextCityCountry" Title="{Binding TitleTextCityCountry}">
-            <!--Elemento Pivot uno-->
-            <phone:PivotItem Header="{Binding LocalizedResources.MainPageForecastHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
-                <phone:LongListSelector x:Name="ForecastItems" Margin="0,0,-12,0" ItemsSource="{Binding ForecastItems}" SelectionChanged="LongListSelector_SelectionChanged">
-                    <phone:LongListSelector.ItemTemplate>
-                        <DataTemplate>
-                            <Grid>
-                                <Grid.RowDefinitions>
-                                    <RowDefinition Height="*" />
-                                    <RowDefinition Height="*" />
-                                    <RowDefinition Height="*" />
-                                </Grid.RowDefinitions>
-                                <Grid.ColumnDefinitions>
-                                    <ColumnDefinition Width="*" />
-                                    <ColumnDefinition Width="*" />
-                                    <ColumnDefinition Width="*" />
-                                </Grid.ColumnDefinitions>
-                                <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Vertical" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                </StackPanel>
-                                <StackPanel Grid.Column="1" Grid.Row="0" Orientation="Vertical" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding LineThree}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <TextBlock Text="{Binding LineFour}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                </StackPanel>
-                                <Image Grid.Column="2" Grid.Row="0" Source="{Binding LineFive}" Width="100" Height="100" Margin="12,-6,12,0" />
-                            </Grid>
-                        </DataTemplate>
-                    </phone:LongListSelector.ItemTemplate>
-                </phone:LongListSelector>
-            </phone:PivotItem>
-
-            <!--Elemento Pivot dos-->
-            <phone:PivotItem Header="{Binding LocalizedResources.MainPageCurrentHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
-                <ScrollViewer HorizontalScrollBarVisibility="Auto">
-                    <Grid>
-                        <Grid.RowDefinitions>
-                            <RowDefinition />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                        </Grid.RowDefinitions>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="*" />
-                        </Grid.ColumnDefinitions>
-                        <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Image Source="{Binding CurrentWeatherImagePath}" Width="100" Height="100" Margin="12,0" />
-                            <StackPanel  Orientation="Vertical" VerticalAlignment="Center">
-                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding CurrentMaxTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                    <TextBlock Text="{Binding CurrentMaxTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                </StackPanel>
-                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding CurrentMinTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                    <TextBlock Text="{Binding CurrentMinTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                </StackPanel>
-                            </StackPanel>
-                        </StackPanel>
-                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,28,0,0">
-                            <TextBlock Text="{Binding CurrentConditions}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                        </StackPanel>
-                        <Grid Grid.Column="0" Grid.Row="2" Margin="0,10,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding CurrentFeelsLikeText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentFeelsLikeTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentFeelsLikeTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding CurrentSnowText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0,12,0"/>
-                                <TextBlock Text="{Binding CurrentSnow}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentSnowUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                        </Grid>
-                        <Grid Grid.Column="0" Grid.Row="3" Margin="0,10,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding CurrentHumidityText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentHumidity}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentHumidityUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding CurrentWindText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentWind}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentWindUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                        </Grid>
-                        <Grid Grid.Column="0" Grid.Row="4" Margin="0,10,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding CurrentRainText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentRain}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentRainUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                                 <TextBlock Text="{Binding CurrentCloudsText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                 <TextBlock Text="{Binding CurrentClouds}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                 <TextBlock Text="{Binding CurrentCloudsUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                        </Grid>
-                        <StackPanel Grid.Column="0" Grid.Row="5" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
-                                <TextBlock Text="{Binding CurrentPressureText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentPressure}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding CurrentPressureUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
-                                <TextBlock Text="{Binding CurrentSunRiseText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentSunRise}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
-                                <TextBlock Text="{Binding CurrentSunSetText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding CurrentSunSet}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                            </StackPanel>
-                        </StackPanel>
-                    </Grid>
-                </ScrollViewer>
-            </phone:PivotItem>
-        </phone:Pivot>
-
-        <!--Quitar la marca de comentarios para ver una cuadrícula de alineación que
-            ayuda a comprobar que los controles están alineados en los límites normales.  La imagen tiene un margen superior de -32px para
-            tener en cuenta la bandeja del sistema. Establécelo en 0 (o quite el margen)
-            si la bandeja del sistema está oculta.
-
-            Antes de enviarla, quita este código XAML y la propia imagen.-->
-        <!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" IsHitTestVisible="False" />-->
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml.cs b/WindowsPhone/WeatherInformation/WeatherInformation/MainPage.xaml.cs
deleted file mode 100644 (file)
index 8c2b9cf..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-using Microsoft.Phone.Controls;
-using System;
-using System.Linq;
-using System.Globalization;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using WeatherInformation.Model;
-using WeatherInformation.Model.Services;
-using WeatherInformation.Resources;
-using WeatherInformation.ViewModels;
-using System.Threading.Tasks;
-using WeatherInformation.Model.JsonDataParser;
-
-namespace WeatherInformation
-{
-    public partial class MainPage : PhoneApplicationPage
-    {
-        private MainViewModel _mainViewModel;
-        private bool _isNewPageInstance = false;
-
-        // Constructor
-        public MainPage()
-        {
-            InitializeComponent();
-
-            _isNewPageInstance = true;
-
-            // Código de ejemplo para traducir ApplicationBar
-            //BuildLocalizedApplicationBar();
-        }
-
-
-        // Cargar datos para los elementos MainViewModel
-        protected override void OnNavigatedTo(NavigationEventArgs e)
-        {
-            base.OnNavigatedTo(e);
-
-            // If _isNewPageInstance is true, the page constuctor has been called, so
-            // state may need to be restored.
-            if (_isNewPageInstance)
-            {
-                if (_mainViewModel == null)
-                {
-                    _mainViewModel = new MainViewModel(new SettingsViewModel());
-                }
-
-                DataContext = _mainViewModel;
-            }
-            // Set _isNewPageInstance to false. If the user navigates back to this page
-            // and it has remained in memory, this value will continue to be false.
-            _isNewPageInstance = false;
-
-            UpdateApplicationDataUI();
-        }
-
-        async private void UpdateApplicationDataUI()
-        {
-            Location locationItem = null;
-            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
-            {
-                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
-            }
-
-            if (locationItem == null)
-            {
-                // Nothing to do.
-                return;
-            }
-
-            // If the application member variable is not empty,
-            // set the page's data object from the application member variable.
-            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
-            if (!IsDataFresh(locationItem.LastRemoteDataUpdate) || weatherData == null)
-            {
-                // Load remote data (aynchronous way by means of async/await)
-
-                // Gets the data from the web.
-                (Application.Current as WeatherInformation.App).ApplicationDataObject =
-                    await GetRemoteDataAsync(locationItem);
-
-                using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
-                {
-                    locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
-                    locationItem.LastRemoteDataUpdate = DateTime.UtcNow;
-                    db.SubmitChanges();
-                }
-            }
-
-            // Call UpdateUI on the UI thread.
-            // Without ConfigureAwait(false) await returns data on the calling thread. In this case the calling one
-            // is the UI thread. So, I can save the call to Dispatcher.BeginInvoke.
-            //Dispatcher.BeginInvoke(() => UpdateUI());
-            UpdateUI();
-        }
-
-        void UpdateUI()
-        {
-            // Set the ApplicationData and ApplicationDataStatus members of the ViewModel
-            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
-
-            if (weatherData != null)
-            {
-                _mainViewModel.LoadData(weatherData);
-            }
-        }
-
-        private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            LongListSelector longListSelector = sender as LongListSelector;
-
-            // TODO: with LINQ :(
-            ItemViewModel element = longListSelector.SelectedItem as ItemViewModel;
-            int index = longListSelector.ItemsSource.IndexOf(element);
-            String uri = string.Format(CultureInfo.InvariantCulture, "/SelectedDatePage.xaml?parameter={0}", index);
-            NavigationService.Navigate(new Uri(uri, UriKind.Relative));
-        }
-
-        /// <summary>
-        /// Retrieve remote weather data.
-        /// </summary>
-        async public Task<WeatherData> GetRemoteDataAsync(Location locationItem)
-        {
-            double latitude = locationItem.Latitude;
-            double longitude = locationItem.Longitude;
-            int resultsNumber = Convert.ToInt32(AppResources.APIOpenWeatherMapResultsNumber);
-
-            CustomHTTPClient httpClient = new CustomHTTPClient();
-
-            string formattedForecastURL = String.Format(
-                CultureInfo.InvariantCulture, AppResources.URIAPIOpenWeatherMapForecast,
-                AppResources.APIVersionOpenWeatherMap, latitude, longitude, resultsNumber);
-            string jsonForecast = await httpClient.GetWeatherDataAsync(formattedForecastURL).ConfigureAwait(false);
-
-            string formattedCurrentURL = String.Format(
-                CultureInfo.InvariantCulture, AppResources.URIAPIOpenWeatherMapCurrent,
-                AppResources.APIVersionOpenWeatherMap, latitude, longitude, resultsNumber);
-            string jsonCurrent = await httpClient.GetWeatherDataAsync(formattedCurrentURL).ConfigureAwait(false);
-
-            var parser = new ServiceParser(new JsonParser());
-            var weatherData = parser.WeatherDataParser(jsonForecast, jsonCurrent, locationItem.City, locationItem.Country);
-
-            return weatherData;
-        }
-
-        private bool IsDataFresh(DateTime? lastUpdate)
-        {
-            if (lastUpdate == null)
-            {
-                return false;
-            }
-
-            // Check the time elapsed since data was last saved to isolated storage.
-            TimeSpan TimeSinceLastSave = DateTime.UtcNow - lastUpdate.Value;
-
-            if (TimeSinceLastSave.TotalSeconds < 30)
-            {
-                return true;
-            }
-
-            return false;
-        }
-
-        private void Location_Click(object sender, EventArgs e)
-        {
-            NavigationService.Navigate(new Uri("/MapPage.xaml", UriKind.Relative));
-        }
-
-        private void Settings_Click(object sender, EventArgs e)
-        {
-            NavigationService.Navigate(new Uri("/SettingsPage.xaml", UriKind.Relative));
-        }
-
-        // Código de ejemplo para compilar una ApplicationBar traducida
-        //private void BuildLocalizedApplicationBar()
-        //{
-        //    // Establecer ApplicationBar de la página en una nueva instancia de ApplicationBar.
-        //    ApplicationBar = new ApplicationBar();
-
-        //    // Crear un nuevo botón y establecer el valor de texto en la cadena traducida de AppResources.
-        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
-        //    appBarButton.Text = AppResources.AppBarButtonText;
-        //    ApplicationBar.Buttons.Add(appBarButton);
-
-        //    // Crear un nuevo elemento de menú con la cadena traducida de AppResources.
-        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
-        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
-        //}
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml
deleted file mode 100644 (file)
index 5c4bd37..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<phone:PhoneApplicationPage
-    x:Class="WeatherInformation.MapPage"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
-    FontFamily="{StaticResource PhoneFontFamilyNormal}"
-    FontSize="{StaticResource PhoneFontSizeNormal}"
-    Foreground="{StaticResource PhoneForegroundBrush}"
-    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
-    mc:Ignorable="d"
-    shell:SystemTray.IsVisible="True">
-
-    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
-    <Grid x:Name="LayoutRoot" Background="Transparent">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition/>
-            <RowDefinition Height="Auto"/>
-            <RowDefinition Height="Auto"/>
-        </Grid.RowDefinitions>
-
-        <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
-        <StackPanel Grid.Row="0" Margin="12,17,0,28">
-            <TextBlock Text="{Binding LocalizedResources.LocationPageTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
-            <TextBlock x:Name="LocationTextCityCountry" Text="{Binding LocalizedResources.LocationPageSubTitle, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle2Style}"/>
-        </StackPanel>
-
-        <!--ContentPanel. Colocar aquí el contenido adicional-->
-        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-            <maps:Map x:Name="mapWeatherInformation" Grid.Row="1" Tap="mapWeatherInformation_Tap"/>
-        </Grid>
-        <Grid Grid.Row="2">
-            <Button x:Name="SaveLocationButton"  Content="{Binding LocalizedResources.MapPageSaveLocationButton, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Click="SaveLocationButton_Click" HorizontalAlignment="Left" VerticalAlignment="Center"/>
-            <Button x:Name="GetCurrentLocationButton" HorizontalAlignment="Right" VerticalAlignment="Center" Content="{Binding LocalizedResources.MapPageGetCurrentLocationButton, Mode=OneWay, Source={StaticResource LocalizedStrings}}" Click="GetCurrentLocationButton_Click"/>
-        </Grid>
-        <Grid Grid.Row="3">
-            <Button x:Name="ZoomInButton" Click="ZoomInButton_Click" HorizontalAlignment="Left" VerticalAlignment="Center" Content="Zoom +"/>
-            <Button x:Name="ZoomOutButton" Click="ZoomOutButton_Click" HorizontalAlignment="Right" VerticalAlignment="Center" Content="Zoom -"/>
-        </Grid>
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml.cs b/WindowsPhone/WeatherInformation/WeatherInformation/MapPage.xaml.cs
deleted file mode 100644 (file)
index d67feb8..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Windows.Devices.Geolocation;
-using System.Device.Location;
-using System.Windows.Shapes;
-using System.Windows.Media;
-using Microsoft.Phone.Maps.Controls;
-using WeatherInformation.Resources;
-using System.Globalization;
-using Microsoft.Phone.Maps.Services;
-using System.Threading.Tasks;
-using WeatherInformation.Model;
-
-namespace WeatherInformation
-{
-    public partial class MapPage : PhoneApplicationPage
-    {
-        // TODO anything better than these two instance fields? :(
-        private string _city;
-        private string _country;
-
-        public MapPage()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnNavigatedTo(NavigationEventArgs e)
-        {
-
-            Location locationItem = null;
-            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
-            {
-                // Define the query to gather all of the to-do items.
-                // var toDoItemsInDB = from Location location in _locationDB.Locations where location.IsSelected select location;
-                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
-            }
-            
-            if (locationItem != null)
-            {
-                GeoCoordinate geoCoordinate = ConvertLocation(locationItem);
-
-                this.UpdateMap(geoCoordinate, locationItem.City, locationItem.Country);
-            }
-        }
-
-        private async Task GetCurrentLocationAndUpdateMap()
-        {
-            Geolocator geolocator = new Geolocator();
-            geolocator.DesiredAccuracyInMeters = 50;
-
-            Geoposition geoposition = await geolocator.GetGeopositionAsync(
-                maximumAge: TimeSpan.FromSeconds(10),
-                timeout: TimeSpan.FromSeconds(10)
-                );
-            GeoCoordinate currentGeoCoordinate = CoordinateHelper.ConvertGeocoordinate(geoposition.Coordinate);
-
-            ReverseGeocodeAndUpdateMap(currentGeoCoordinate);
-        }
-
-        // TODO: problems updating Map because this method may be called when automatically retrieving
-        //       the current user's location or when user taps on map tyring to choose by herself her location.
-        //       There could be 2 threads updating Map at the same time. Solution: remove the feature
-        //       of getting the current user's location (user must always choose her/his location instead of doing
-        //       it automatically)
-        private void ReverseGeocodeAndUpdateMap(GeoCoordinate currentGeoCoordinate)
-        {
-            ReverseGeocodeQuery currentReverseGeocodeQuery = new ReverseGeocodeQuery();
-            currentReverseGeocodeQuery.GeoCoordinate = currentGeoCoordinate;
-            currentReverseGeocodeQuery.QueryCompleted += QueryCompletedCallback;
-            currentReverseGeocodeQuery.QueryAsync();
-        }
-
-        private void QueryCompletedCallback(object sender, QueryCompletedEventArgs<IList<MapLocation>> eventData)
-        {
-            if (eventData.Cancelled)
-            {
-                // Be careful!!! If you throw exception from this point your program will finish with "Unhandled Exception".
-                return;
-            }
-
-            Exception errorException = eventData.Error;
-            if (errorException != null)
-            {
-                MessageBox.Show(
-                    AppResources.NoticeErrorLocationAutodetection,
-                    AppResources.UnavailableAutomaticCurrentLocationMessageBox,
-                    MessageBoxButton.OK);
-            }
-            else
-            {
-                if (eventData.Result.Count > 0)
-                {
-                    MapAddress address = eventData.Result[0].Information.Address;
-                    GeoCoordinate currentGeoCoordinate = eventData.Result[0].GeoCoordinate;
-
-                    UpdateMap(currentGeoCoordinate, address.City, address.Country);
-                }
-            }
-        }
-
-        private void UpdateMap(GeoCoordinate geoCoordinate, string city, string country)
-        {
-            // Create a small circle to mark the current location.
-            Ellipse myCircle = new Ellipse();
-            myCircle.Fill = new SolidColorBrush(Colors.Blue);
-            myCircle.Height = 20;
-            myCircle.Width = 20;
-            myCircle.Opacity = 50;
-
-            // Create a MapOverlay to contain the circle.
-            MapOverlay myLocationOverlay = new MapOverlay();
-            myLocationOverlay.Content = myCircle;
-            myLocationOverlay.PositionOrigin = new Point(0.5, 0.5);
-            myLocationOverlay.GeoCoordinate = geoCoordinate;
-
-            // Create a MapLayer to contain the MapOverlay.
-            MapLayer myLocationLayer = new MapLayer();
-            myLocationLayer.Add(myLocationOverlay);
-
-            this.mapWeatherInformation.Layers.Clear();
-
-            this.mapWeatherInformation.Center = geoCoordinate;
-            this.mapWeatherInformation.ZoomLevel = 13;
-
-            if (string.IsNullOrEmpty(city))
-            {
-                city = AppResources.DefaultCity;
-            }
-            if (string.IsNullOrEmpty(country))
-            {
-                country = AppResources.DefaultCountry;
-            }
-            this.LocationTextCityCountry.Text = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
-            _city = city;
-            _country = country;
-            // Add the MapLayer to the Map.
-            this.mapWeatherInformation.Layers.Add(myLocationLayer);
-        }
-
-        private static class CoordinateHelper
-        {
-            public static GeoCoordinate ConvertGeocoordinate(Geocoordinate geocoordinate)
-            {
-                return new GeoCoordinate
-                    (
-                    geocoordinate.Latitude,
-                    geocoordinate.Longitude,
-                    geocoordinate.Altitude ?? Double.NaN,
-                    geocoordinate.Accuracy,
-                    geocoordinate.AltitudeAccuracy ?? Double.NaN,
-                    geocoordinate.Speed ?? Double.NaN,
-                    geocoordinate.Heading ?? Double.NaN
-                    );
-            }
-        }
-
-        // TODO: check data before storing :(
-        // http://stackoverflow.com/questions/4521435/what-specific-values-can-a-c-sharp-double-represent-that-a-sql-server-float-can
-        private void StoreLocation(GeoCoordinate geocoordinate)
-        {
-            Location locationItem = null;
-            using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
-            {
-                // Define the query to gather all of the to-do items.
-                // var toDoItemsInDB = from Location location in _locationDB.Locations where location.IsSelected select location;
-                locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
-
-                if (locationItem != null)
-                {
-                    locationItem.Latitude = geocoordinate.Latitude;
-                    locationItem.Longitude = geocoordinate.Longitude;
-                    locationItem.Altitude = geocoordinate.Altitude;
-                    locationItem.City = _city ?? "";
-                    locationItem.Country = _country ?? "";
-                    locationItem.HorizontalAccuracy = geocoordinate.HorizontalAccuracy;
-                    locationItem.VerticalAccuracy = geocoordinate.VerticalAccuracy;
-                    locationItem.Speed = geocoordinate.Speed;
-                    locationItem.Course = geocoordinate.Course;
-                    locationItem.IsSelected = true;
-                    locationItem.LastRemoteDataUpdate = null;
-                }
-                else
-                {
-                    locationItem = new Location()
-                    {
-                        Latitude = geocoordinate.Latitude,
-                        Longitude = geocoordinate.Longitude,
-                        Altitude = geocoordinate.Altitude,
-                        City = _city ?? "",
-                        Country = _country ?? "",
-                        HorizontalAccuracy = geocoordinate.HorizontalAccuracy,
-                        VerticalAccuracy = geocoordinate.VerticalAccuracy,
-                        Speed = geocoordinate.Speed,
-                        Course = geocoordinate.Course,
-                        IsSelected = true,
-                        LastRemoteDataUpdate = null,
-                    };
-
-                    // Add a location item to the local database.
-                    db.Locations.InsertOnSubmit(locationItem);
-                }
-
-                db.SubmitChanges();
-            }
-        }
-
-        private GeoCoordinate ConvertLocation(Location locationItem)
-        {
-            return new GeoCoordinate
-                (
-                locationItem.Latitude,
-                locationItem.Longitude,
-                locationItem.Altitude,
-                locationItem.HorizontalAccuracy,
-                locationItem.VerticalAccuracy,
-                locationItem.Speed,
-                locationItem.Course
-                );
-        }
-
-        private void mapWeatherInformation_Tap(object sender, System.Windows.Input.GestureEventArgs e)
-        {
-            var point = e.GetPosition(this.mapWeatherInformation);
-            GeoCoordinate geocoordinate = this.mapWeatherInformation.ConvertViewportPointToGeoCoordinate(point);
-            ReverseGeocodeAndUpdateMap(geocoordinate);
-        }
-
-        private async void GetCurrentLocationButton_Click(object sender, RoutedEventArgs e)
-        {
-            try
-            {
-                await this.GetCurrentLocationAndUpdateMap();
-            }
-            catch (Exception ex)
-            {
-                // TODO: make sure when exception in GetCurrentLocationAndUpdateMap we catch it here.
-                MessageBox.Show(
-                    AppResources.NoticeErrorLocationAutodetection,
-                    AppResources.UnavailableAutomaticCurrentLocationMessageBox,
-                    MessageBoxButton.OK);
-            }
-        }
-
-        private void SaveLocationButton_Click(object sender, RoutedEventArgs e)
-        {
-            // TODO: Could there some problem if user clicks button and thread is in this very moment updating map?
-            var geoCoordinate = this.mapWeatherInformation.Center;
-
-            StoreLocation(geoCoordinate);
-        }
-
-        private void ZoomOutButton_Click(object sender, RoutedEventArgs e)
-        {
-            this.mapWeatherInformation.ZoomLevel = this.mapWeatherInformation.ZoomLevel - 1;
-        }
-
-        private void ZoomInButton_Click(object sender, RoutedEventArgs e)
-        {
-            this.mapWeatherInformation.ZoomLevel = this.mapWeatherInformation.ZoomLevel + 1;
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Clouds.cs
deleted file mode 100644 (file)
index d3e9557..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Clouds
-    {
-        public int all { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Coord.cs
deleted file mode 100644 (file)
index 78aeee3..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Coord
-    {
-        public double lon { get; set; }
-        public double lat { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/CurrentWeather.cs
deleted file mode 100644 (file)
index d2e1479..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Collections.Generic;
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class CurrentWeather
-    {
-        public Coord coord { get; set; }
-        public Sys sys { get; set; }
-        public List<Weather> weather { get; set; }
-        public string @base { get; set; }
-        public Main main { get; set; }
-        public Wind wind { get; set; }
-        public Snow snow { get; set; }
-        public Rain rain { get; set; }
-        public Clouds clouds { get; set; }
-        public int dt { get; set; }
-        public int id { get; set; }
-        public string name { get; set; }
-        public int cod { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Main.cs
deleted file mode 100644 (file)
index 78ad137..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Main
-    {
-        public double temp { get; set; }
-        public double pressure { get; set; }
-        public int humidity { get; set; }
-        public double temp_min { get; set; }
-        public double temp_max { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Rain.cs
deleted file mode 100644 (file)
index ec9b570..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Rain
-    {
-        private double threeHours;
-
-        public void set3h(double three)
-        {
-            this.threeHours = three;
-        }
-
-        public double get3h()
-        {
-            return this.threeHours;
-        }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Snow.cs
deleted file mode 100644 (file)
index 01108fb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Snow
-    {
-        private double threeHours;
-
-        public void set3h(double three)
-        {
-            this.threeHours = three;
-        }
-
-        public double get3h()
-        {
-            return this.threeHours;
-        }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Sys.cs
deleted file mode 100644 (file)
index b707f46..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Sys
-    {
-        public double message { get; set; }
-        public string country { get; set; }
-        public int sunrise { get; set; }
-        public int sunset { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Weather.cs
deleted file mode 100644 (file)
index 281d68a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Weather
-    {
-        public int id { get; set; }
-        public string main { get; set; }
-        public string description { get; set; }
-        public string icon { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/CurrentWeatherParser/Wind.cs
deleted file mode 100644 (file)
index a48b82c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-namespace WeatherInformation.Model.CurrentWeatherParser
-{
-    public class Wind
-    {
-        public double speed { get; set; }
-        public double deg { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/City.cs
deleted file mode 100644 (file)
index 519ee00..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class City
-    {
-        public int id { get; set; }
-        public string name { get; set; }
-        public Coord coord { get; set; }
-        public string country { get; set; }
-        public int population { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Coord.cs
deleted file mode 100644 (file)
index d5556ac..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class Coord
-    {
-        public double lon { get; set; }
-        public double lat { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/ForecastWeather.cs
deleted file mode 100644 (file)
index 0395b3f..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Collections.Generic;
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class ForecastWeather
-    {
-        public string cod { get; set; }
-        public double message { get; set; }
-        public City city { get; set; }
-        public int cnt { get; set; }
-        public List<WeatherInformation.Model.ForecastWeatherParser.List> list { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/List.cs
deleted file mode 100644 (file)
index c57e3c7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Collections.Generic;
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class List
-    {
-        public int dt { get; set; }
-        public Temp temp { get; set; }
-        public double pressure { get; set; }
-        public int humidity { get; set; }
-        public List<Weather> weather { get; set; }
-        public double speed { get; set; }
-        public int deg { get; set; }
-        public int clouds { get; set; }
-        public double rain { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Temp.cs
deleted file mode 100644 (file)
index 6c1eac5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class Temp
-    {
-        public double day { get; set; }
-        public double min { get; set; }
-        public double max { get; set; }
-        public double night { get; set; }
-        public double eve { get; set; }
-        public double morn { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/ForecastWeatherParser/Weather.cs
deleted file mode 100644 (file)
index fbca69b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-namespace WeatherInformation.Model.ForecastWeatherParser
-{
-    public class Weather
-    {
-        public int id { get; set; }
-        public string main { get; set; }
-        public string description { get; set; }
-        public string icon { get; set; }
-    }
-}
-
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/Images/RemoteImagesTranslation.cs
deleted file mode 100644 (file)
index 36d6ae0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-using System.Collections.Generic;
-
-namespace WeatherInformation.Model.Images
-{
-    class RemoteImagesTranslation
-    {
-        // C# Language Specification§10.11
-        // If a class contains any static fields with initializers, those initializers are executed
-        // in textual order immediately prior to executing the static constructor.
-        private readonly static Dictionary<string, string> images = new Dictionary<string, string>();
-
-        static RemoteImagesTranslation()
-        {
-            images.Add("01d", "weather_clear");
-            images.Add("01n", "weather_clear_night");
-            images.Add("02d", "weather_few_clouds");
-            images.Add("02n", "weather_few_clouds_night");
-            images.Add("03d", "weather_few_clouds");
-            images.Add("03n", "weather_few_clouds");
-            images.Add("04d", "weather_overcast");
-            images.Add("04n", "weather_overcast");
-            images.Add("09d", "weather_showers");
-            images.Add("09n", "weather_showers");
-            images.Add("10d", "weather_showers_scattered");
-            images.Add("10n", "weather_showers_scattered");
-            images.Add("11d", "weather_storm");
-            images.Add("11n", "weather_storm");
-            images.Add("13d", "weather_snow");
-            images.Add("13n", "weather_snow");
-            images.Add("50d", "weather_fog");
-            images.Add("50n", "weather_fog");
-        }
-
-        public static string GetTransaltedImage(string id)
-        {
-            string value;
-            images.TryGetValue(id, out value);
-
-            return value;
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/JsonDataParser/JsonParser.cs
deleted file mode 100644 (file)
index 8c2e7a0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-using Newtonsoft.Json;
-using System;
-
-namespace WeatherInformation.Model.JsonDataParser
-{
-    class JsonParser
-    {
-        /// <summary>
-        /// The _json _settings.
-        /// </summary>
-        private static readonly JsonSerializerSettings _jsonSettings =
-            new JsonSerializerSettings
-            {
-                Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
-                {
-                    //Console.WriteLine(args.ErrorContext.Error.Message); No logs for WP8 :(
-                    args.ErrorContext.Handled = true;
-                }
-            };
-
-        public TWeatherData ParserWeatherData<TWeatherData>(String jsonData)
-        {
-            return JsonConvert.DeserializeObject<TWeatherData>(jsonData, _jsonSettings);
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/Location.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/Location.cs
deleted file mode 100644 (file)
index 6f29b0f..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Data.Linq;
-using System.Data.Linq.Mapping;
-
-namespace WeatherInformation.Model
-{
-    [Table]
-    public class Location : INotifyPropertyChanged, INotifyPropertyChanging
-    {
-        // Version column aids update performance.
-        [Column(IsVersion = true)]
-        private Binary _version;
-
-        private int _itemId;
-        [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
-        public int ItemId
-        {
-            get
-            {
-                return _itemId;
-            }
-            set
-            {
-                if (_itemId != value)
-                {
-                    NotifyPropertyChanging("ItemId");
-                    _itemId = value;
-                    NotifyPropertyChanged("ItemId");
-                }
-            }
-        }
-
-        private bool _isSelected;
-        [Column(CanBeNull = false)]
-        public bool IsSelected
-        {
-            get
-            {
-                return _isSelected;
-            }
-            set
-            {
-                if (_isSelected != value)
-                {
-                    NotifyPropertyChanging("IsSelected");
-                    _isSelected = value;
-                    NotifyPropertyChanged("IsSelected");
-                }
-            }
-        }
-
-        private double _latitude;
-        [Column(CanBeNull = false)]
-        public double Latitude
-        {
-            get
-            {
-                return _latitude;
-            }
-            set
-            {
-                if (_latitude != value)
-                {
-                    NotifyPropertyChanging("Latitude");
-                    _latitude = value;
-                    NotifyPropertyChanged("Latitude");
-                }
-            }
-        }
-
-        private double _longitude;
-        [Column(CanBeNull = false)]
-        public double Longitude
-        {
-            get
-            {
-                return _longitude;
-            }
-            set
-            {
-                if (_longitude != value)
-                {
-                    NotifyPropertyChanging("Longitude");
-                    _longitude = value;
-                    NotifyPropertyChanged("Longitude");
-                }
-            }
-        }
-
-        private double _altitude;
-        [Column(CanBeNull = false)]
-        public double Altitude
-        {
-            get
-            {
-                return _altitude;
-            }
-            set
-            {
-                if (_altitude != value)
-                {
-                    NotifyPropertyChanging("Altitude");
-                    _altitude = value;
-                    NotifyPropertyChanged("Altitude");
-                }
-            }
-        }
-
-        private double _horizontalAccuracy;
-        [Column(CanBeNull = false)]
-        public double HorizontalAccuracy
-        {
-            get
-            {
-                return _horizontalAccuracy;
-            }
-            set
-            {
-                if (_horizontalAccuracy != value)
-                {
-                    NotifyPropertyChanging("HorizontalAccuracy");
-                    _horizontalAccuracy = value;
-                    NotifyPropertyChanged("HorizontalAccuracy");
-                }
-            }
-        }
-
-        private double _verticalAccuracy;
-        [Column(CanBeNull = false)]
-        public double VerticalAccuracy
-        {
-            get
-            {
-                return _verticalAccuracy;
-            }
-            set
-            {
-                if (_verticalAccuracy != value)
-                {
-                    NotifyPropertyChanging("VerticalAccuracy");
-                    _verticalAccuracy = value;
-                    NotifyPropertyChanged("VerticalAccuracy");
-                }
-            }
-        }
-
-        private double _speed;
-        [Column(CanBeNull = false)]
-        public double Speed
-        {
-            get
-            {
-                return _speed;
-            }
-            set
-            {
-                if (_speed != value)
-                {
-                    NotifyPropertyChanging("Speed");
-                    _speed = value;
-                    NotifyPropertyChanged("Speed");
-                }
-            }
-        }
-
-        private double _course;
-        [Column(CanBeNull = false)]
-        public double Course
-        {
-            get
-            {
-                return _course;
-            }
-            set
-            {
-                if (_course != value)
-                {
-                    NotifyPropertyChanging("Course");
-                    _course = value;
-                    NotifyPropertyChanged("Course");
-                }
-            }
-        }
-
-        private string _city;
-        [Column(CanBeNull = false)]
-        public string City
-        {
-            get
-            {
-                return _city;
-            }
-            set
-            {
-                if (_city != value)
-                {
-                    NotifyPropertyChanging("City");
-                    _city = value;
-                    NotifyPropertyChanged("City");
-                }
-            }
-        }
-
-        private string _country;
-        [Column(CanBeNull = false)]
-        public string Country
-        {
-            get
-            {
-                return _country;
-            }
-            set
-            {
-                if (_country != value)
-                {
-                    NotifyPropertyChanging("Country");
-                    _country = value;
-                    NotifyPropertyChanged("Country");
-                }
-            }
-        }
-
-        private DateTime? _lastRemoteDataUpdate;
-        [Column(CanBeNull = true)]
-        public DateTime? LastRemoteDataUpdate
-        {
-            get
-            {
-                return _lastRemoteDataUpdate;
-            }
-            set
-            {
-                if (_lastRemoteDataUpdate != value)
-                {
-                    NotifyPropertyChanging("LastRemoteDataUpdate");
-                    _lastRemoteDataUpdate = value;
-                    NotifyPropertyChanged("LastRemoteDataUpdate");
-                }
-            }
-        }
-
-        #region INotifyPropertyChanged Members
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        // Used to notify the page that a data context property changed
-        private void NotifyPropertyChanged(string propertyName)
-        {
-            if (PropertyChanged != null)
-            {
-                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-
-        #endregion
-
-        #region INotifyPropertyChanging Members
-
-        public event PropertyChangingEventHandler PropertyChanging;
-
-        // Used to notify the data context that a data context property is about to change
-        private void NotifyPropertyChanging(string propertyName)
-        {
-            if (PropertyChanging != null)
-            {
-                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
-            }
-        }
-
-        #endregion
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/LocationDataContext.cs
deleted file mode 100644 (file)
index 5360ed9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Data.Linq;
-
-namespace WeatherInformation.Model
-{
-    public class LocationDataContext : DataContext
-    {
-        // Specify the connection string as a static, used in main page and app.xaml.
-        public static string DBConnectionString = "Data Source=isostore:/Locations.sdf";
-
-        // Pass the connection string to the base class.
-        public LocationDataContext(string connectionString)
-            : base(connectionString)
-        { }
-
-        // Specify a single table for the location items.
-        public Table<Location> Locations;
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/CustomHTTPClient.cs
deleted file mode 100644 (file)
index f93fc75..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-using System;
-using System.IO;
-using System.Net;
-using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WeatherInformation.Model.Services
-{
-    class CustomHTTPClient
-    {
-        async public Task<string> GetWeatherDataAsync(string uri)
-        {
-            if (string.IsNullOrEmpty(uri))
-            {
-                throw new ArgumentException("Missing argument", "uri");
-            }
-
-            // TODO: it would be nice to use the same HttpClient for the the 2 requests instead of creating
-            //       a new one for each connection. :( Not easy with using statement and async :(
-            using(HttpClientHandler handler = new HttpClientHandler
-            {
-                // TODO: check if this really works when receiving compressed data.
-                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
-            })
-            using (HttpClient client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) })
-            {
-                HttpRequestHeaders headers = client.DefaultRequestHeaders;
-
-                headers.UserAgent.Clear();
-                headers.UserAgent.Add(new ProductInfoHeaderValue(new ProductHeaderValue("WeatherInformation", "WP8")));
-
-                headers.AcceptCharset.Clear();
-                headers.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8"));
-
-                headers.Accept.Clear();
-                headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
-
-                headers.AcceptEncoding.Clear();
-                headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
-                headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
-
-                // Bypassing Windows cache
-                DateTime currentDate = DateTime.UtcNow;
-                string uriWindowsCacheSucks = String.Concat(uri, currentDate);
-
-                // TODO: HttpCompletionOption, without it, by default, I am buffering the received data.
-                //       in this case it is not a problem but when receiving loads of bytes I do not
-                //       think it is a great idea to buffer all of them... :(
-                using (HttpResponseMessage response = await client.GetAsync(uriWindowsCacheSucks).ConfigureAwait(false))
-                {
-                    response.EnsureSuccessStatusCode();
-
-                    using (HttpContent contentRESULT = response.Content)
-                    {
-                        return await this.ReadResponseAsync(contentRESULT).ConfigureAwait(false);
-                    }
-                }
-            }
-        }
-
-        async private Task<string> ReadResponseAsync(HttpContent content)
-        {
-            Encoding encoding;
-            if (content.Headers != null && content.Headers.ContentType != null && content.Headers.ContentType.CharSet != null)
-            {
-                encoding = Encoding.GetEncoding(content.Headers.ContentType.CharSet);
-            }
-            else
-            {
-                encoding = Encoding.UTF8;
-            }
-
-            using (Stream stream = await content.ReadAsStreamAsync().ConfigureAwait(false))
-            using (StreamReader streamReader = new StreamReader(stream, encoding))
-            {
-                return await streamReader.ReadToEndAsync().ConfigureAwait(false);
-            }
-        }
-    }  
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/Services/ServiceParser.cs
deleted file mode 100644 (file)
index e46219e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-using WeatherInformation.Model.CurrentWeatherParser;
-using WeatherInformation.Model.ForecastWeatherParser;
-using WeatherInformation.Model.JsonDataParser;
-using System;
-
-namespace WeatherInformation.Model.Services
-{
-    class ServiceParser
-    {
-        private readonly JsonParser _jsonParser;
-
-        public ServiceParser(JsonParser jsonParser)
-        {
-            this._jsonParser = jsonParser;
-        }
-
-        public CurrentWeather GetCurrentWeather(String jsonData)
-        {
-            return this._jsonParser.ParserWeatherData<CurrentWeather>(jsonData);
-        }
-
-        public ForecastWeather GetForecastWeather(String jsonData)
-        {
-            return this._jsonParser.ParserWeatherData<ForecastWeather>(jsonData);
-        }
-
-        public WeatherData WeatherDataParser(
-            string jsonForecast, string jsonCurrent, string city, string country)
-        {
-            if (string.IsNullOrEmpty(jsonForecast))
-            {
-                throw new ArgumentException("Missing argument", "JSONForecast");
-            }
-            if (string.IsNullOrEmpty(jsonCurrent))
-            {
-                throw new ArgumentException("Missing argument", "JSONCurrent");
-            }
-
-            var forecast = GetForecastWeather(jsonForecast);
-            var current = GetCurrentWeather(jsonCurrent);
-            return new WeatherData(forecast, jsonForecast, current, jsonCurrent, city, country);
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Model/WeatherData.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Model/WeatherData.cs
deleted file mode 100644 (file)
index e486922..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-using WeatherInformation.Model.CurrentWeatherParser;
-using WeatherInformation.Model.ForecastWeatherParser;
-
-namespace WeatherInformation.Model
-{
-    public class WeatherData
-    {
-        private readonly ForecastWeather _forecast;
-        private readonly string _jsonForecast;
-        private readonly CurrentWeather _current;
-        private readonly string _jsonCurrent;
-        private readonly string _city;
-        private readonly string _country;
-
-        public WeatherData(ForecastWeather forecast, string jsonForecast, CurrentWeather current,
-                           string jsonCurrent, string city, string country)
-        {
-            _forecast = forecast;
-            _jsonForecast = jsonForecast;
-            _current = current;
-            _jsonCurrent = jsonCurrent;
-            _city = city;
-            _country = country;
-        }
-
-        public ForecastWeather Forecast { get { return _forecast; } }
-        public string JSONForecast { get { return _jsonForecast; } }
-        public CurrentWeather Current { get { return _current; } }
-        public string JSONCurrent { get { return _jsonCurrent; } }
-        public string City { get { return _city; } }
-        public string Country { get { return _country; } }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Properties/AppManifest.xml b/WindowsPhone/WeatherInformation/WeatherInformation/Properties/AppManifest.xml
deleted file mode 100644 (file)
index 3b998eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index e310a8c..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// La información general de un ensamblado se controla mediante el siguiente 
-// conjunto de atributos. Cambie los valores de estos atributos para modificar la información
-// asociada a un ensamblado.
-[assembly: AssemblyTitle("WeatherInformation")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("WeatherInformation")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Si ComVisible se establece en False, los componentes COM no verán los 
-// tipos de este ensamblado.  Si necesita obtener acceso a un tipo de este ensamblado desde 
-// COM, establezca el atributo ComVisible en True en este tipo.
-[assembly: ComVisible(false)]
-
-// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM
-[assembly: Guid("21be107b-f7de-4ff1-b103-90430c323fe2")]
-
-// La información de versión de un ensamblado consta de los cuatro valores siguientes:
-//
-//      Versión principal
-//      Versión secundaria 
-//      Número de compilación
-//      Revisión
-//
-// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y revisión 
-// mediante el carácter '*', como se muestra a continuación:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en")]
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml b/WindowsPhone/WeatherInformation/WeatherInformation/Properties/WMAppManifest.xml
deleted file mode 100644 (file)
index 46b8cd5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
-  <DefaultLanguage xmlns="" code="en" />
-  <Languages xmlns="">
-    <Language code="es" />
-    <Language code="qps-ploc" />
-  </Languages>
-  <App xmlns="" ProductID="{71d9693c-af50-4d7f-ac37-811ba1f1a0d7}" Title="WeatherInformation" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="Gustavo Martin Morcuende" Description="Sample description" Publisher="gumartinm.name" PublisherID="{78440e1b-f001-4e24-a0ea-dce58b830f07}">
-    <IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
-    <Capabilities>
-      <Capability Name="ID_CAP_NETWORKING" />
-      <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
-      <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
-      <Capability Name="ID_CAP_SENSORS" />
-      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
-      <Capability Name="ID_CAP_MAP" />
-      <Capability Name="ID_CAP_LOCATION" />
-    </Capabilities>
-    <Tasks>
-      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
-    </Tasks>
-    <Tokens>
-      <PrimaryToken TokenID="WeatherInformationToken" TaskName="_default">
-        <TemplateFlip>
-          <SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
-          <Count>0</Count>
-          <BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
-          <Title>WeatherInformation</Title>
-          <BackContent></BackContent>
-          <BackBackgroundImageURI></BackBackgroundImageURI>
-          <BackTitle></BackTitle>
-          <DeviceLockImageURI></DeviceLockImageURI>
-          <HasLarge></HasLarge>
-        </TemplateFlip>
-      </PrimaryToken>
-    </Tokens>
-    <ScreenResolutions>
-      <ScreenResolution Name="ID_RESOLUTION_WVGA" />
-      <ScreenResolution Name="ID_RESOLUTION_WXGA" />
-      <ScreenResolution Name="ID_RESOLUTION_HD720P" />
-    </ScreenResolutions>
-  </App>
-</Deployment>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/README_FIRST.txt b/WindowsPhone/WeatherInformation/WeatherInformation/README_FIRST.txt
deleted file mode 100644 (file)
index ce40c01..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-For the Windows Phone toolkit make sure that you have
-marked the icons in the "Toolkit.Content" folder as content.  That way they 
-can be used as the icons for the ApplicationBar control.
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.Designer.cs
deleted file mode 100644 (file)
index 35806cd..0000000
+++ /dev/null
@@ -1,540 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     Este código fue generado por una herramienta.
-//     Versión de runtime:4.0.30319.34014
-//
-//     Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
-//     se vuelve a generar el código.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace WeatherInformation.Resources {
-    using System;
-    
-    
-    /// <summary>
-    ///   Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
-    /// </summary>
-    // StronglyTypedResourceBuilder generó automáticamente esta clase
-    // a través de una herramienta como ResGen o Visual Studio.
-    // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen
-    // con la opción /str o recompile su proyecto de VS.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    public class AppResources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal AppResources() {
-        }
-        
-        /// <summary>
-        ///   Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WeatherInformation.Resources.AppResources", typeof(AppResources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las
-        ///   búsquedas de recursos mediante esta clase de recurso fuertemente tipado.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        public static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a 14.
-        /// </summary>
-        public static string APIOpenWeatherMapResultsNumber {
-            get {
-                return ResourceManager.GetString("APIOpenWeatherMapResultsNumber", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a 2.5.
-        /// </summary>
-        public static string APIVersionOpenWeatherMap {
-            get {
-                return ResourceManager.GetString("APIVersionOpenWeatherMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a add.
-        /// </summary>
-        public static string AppBarButtonText {
-            get {
-                return ResourceManager.GetString("AppBarButtonText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Menu item.
-        /// </summary>
-        public static string AppBarMenuItemText {
-            get {
-                return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a MY APPLICATION.
-        /// </summary>
-        public static string ApplicationTitle {
-            get {
-                return ResourceManager.GetString("ApplicationTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a City not found.
-        /// </summary>
-        public static string DefaultCity {
-            get {
-                return ResourceManager.GetString("DefaultCity", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Country not found.
-        /// </summary>
-        public static string DefaultCountry {
-            get {
-                return ResourceManager.GetString("DefaultCountry", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a City, country.
-        /// </summary>
-        public static string LocationPageSubTitle {
-            get {
-                return ResourceManager.GetString("LocationPageSubTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Pick your location.
-        /// </summary>
-        public static string LocationPageTitle {
-            get {
-                return ResourceManager.GetString("LocationPageTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a CLOUDS.
-        /// </summary>
-        public static string MainPageCurrentClouds {
-            get {
-                return ResourceManager.GetString("MainPageCurrentClouds", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a %.
-        /// </summary>
-        public static string MainPageCurrentCloudsUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentCloudsUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a FEELS LIKE.
-        /// </summary>
-        public static string MainPageCurrentFeelsLike {
-            get {
-                return ResourceManager.GetString("MainPageCurrentFeelsLike", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a current.
-        /// </summary>
-        public static string MainPageCurrentHeader {
-            get {
-                return ResourceManager.GetString("MainPageCurrentHeader", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a HUMIDITY.
-        /// </summary>
-        public static string MainPageCurrentHumidity {
-            get {
-                return ResourceManager.GetString("MainPageCurrentHumidity", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a %.
-        /// </summary>
-        public static string MainPageCurrentHumidityUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentHumidityUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a PRESSURE.
-        /// </summary>
-        public static string MainPageCurrentPressure {
-            get {
-                return ResourceManager.GetString("MainPageCurrentPressure", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a hpa.
-        /// </summary>
-        public static string MainPageCurrentPressureUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentPressureUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a RAIN.
-        /// </summary>
-        public static string MainPageCurrentRain {
-            get {
-                return ResourceManager.GetString("MainPageCurrentRain", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a mm 3h.
-        /// </summary>
-        public static string MainPageCurrentRainUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentRainUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a SNOW.
-        /// </summary>
-        public static string MainPageCurrentSnow {
-            get {
-                return ResourceManager.GetString("MainPageCurrentSnow", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a mm 3h.
-        /// </summary>
-        public static string MainPageCurrentSnowUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentSnowUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a SUN RISE (UTC).
-        /// </summary>
-        public static string MainPageCurrentSunRise {
-            get {
-                return ResourceManager.GetString("MainPageCurrentSunRise", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a SUN SET (UTC).
-        /// </summary>
-        public static string MainPageCurrentSunSet {
-            get {
-                return ResourceManager.GetString("MainPageCurrentSunSet", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a WIND.
-        /// </summary>
-        public static string MainPageCurrentWind {
-            get {
-                return ResourceManager.GetString("MainPageCurrentWind", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a m/s.
-        /// </summary>
-        public static string MainPageCurrentWindUnits {
-            get {
-                return ResourceManager.GetString("MainPageCurrentWindUnits", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a forecast.
-        /// </summary>
-        public static string MainPageForecastHeader {
-            get {
-                return ResourceManager.GetString("MainPageForecastHeader", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a City, country.
-        /// </summary>
-        public static string MainPageTitle {
-            get {
-                return ResourceManager.GetString("MainPageTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Current Location.
-        /// </summary>
-        public static string MapPageGetCurrentLocationButton {
-            get {
-                return ResourceManager.GetString("MapPageGetCurrentLocationButton", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Save Location.
-        /// </summary>
-        public static string MapPageSaveLocationButton {
-            get {
-                return ResourceManager.GetString("MapPageSaveLocationButton", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Location autodetection seems to be disabled in your phone.
-        /// </summary>
-        public static string NoticeErrorLocationAutodetection {
-            get {
-                return ResourceManager.GetString("NoticeErrorLocationAutodetection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a There is not stored locations..
-        /// </summary>
-        public static string NoticeThereIsNotCurrentLocation {
-            get {
-                return ResourceManager.GetString("NoticeThereIsNotCurrentLocation", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a LeftToRight.
-        /// </summary>
-        public static string ResourceFlowDirection {
-            get {
-                return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a en.
-        /// </summary>
-        public static string ResourceLanguage {
-            get {
-                return ResourceManager.GetString("ResourceLanguage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a DAY.
-        /// </summary>
-        public static string SelectedDatePageDay {
-            get {
-                return ResourceManager.GetString("SelectedDatePageDay", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a EVENING.
-        /// </summary>
-        public static string SelectedDatePageEvening {
-            get {
-                return ResourceManager.GetString("SelectedDatePageEvening", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a MORNING.
-        /// </summary>
-        public static string SelectedDatePageMorning {
-            get {
-                return ResourceManager.GetString("SelectedDatePageMorning", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a NIGHT.
-        /// </summary>
-        public static string SelectedDatePageNight {
-            get {
-                return ResourceManager.GetString("SelectedDatePageNight", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Forecast day numbers.
-        /// </summary>
-        public static string SettingsForecastDayNumbersHeader {
-            get {
-                return ResourceManager.GetString("SettingsForecastDayNumbersHeader", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a 5-Day Forecast.
-        /// </summary>
-        public static string SettingsForecastDayNumbersSelectionFive {
-            get {
-                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionFive", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a 14-Day Forecast.
-        /// </summary>
-        public static string SettingsForecastDayNumbersSelectionFourteen {
-            get {
-                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionFourteen", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a 10-Day Forecast.
-        /// </summary>
-        public static string SettingsForecastDayNumbersSelectionTen {
-            get {
-                return ResourceManager.GetString("SettingsForecastDayNumbersSelectionTen", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Language.
-        /// </summary>
-        public static string SettingsLanguageHeader {
-            get {
-                return ResourceManager.GetString("SettingsLanguageHeader", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a english.
-        /// </summary>
-        public static string SettingsLanguageSelectionEnglish {
-            get {
-                return ResourceManager.GetString("SettingsLanguageSelectionEnglish", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a spanish.
-        /// </summary>
-        public static string SettingsLanguageSelectionSpanish {
-            get {
-                return ResourceManager.GetString("SettingsLanguageSelectionSpanish", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a settings.
-        /// </summary>
-        public static string SettingsPageHeaderSettings {
-            get {
-                return ResourceManager.GetString("SettingsPageHeaderSettings", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a Temperature units.
-        /// </summary>
-        public static string SettingsTemperatureUnitsHeader {
-            get {
-                return ResourceManager.GetString("SettingsTemperatureUnitsHeader", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a celsius.
-        /// </summary>
-        public static string SettingsTemperatureUnitsSelectionCentigrade {
-            get {
-                return ResourceManager.GetString("SettingsTemperatureUnitsSelectionCentigrade", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a fahrenheit.
-        /// </summary>
-        public static string SettingsTemperatureUnitsSelectionFahrenheit {
-            get {
-                return ResourceManager.GetString("SettingsTemperatureUnitsSelectionFahrenheit", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a ºC.
-        /// </summary>
-        public static string TemperatureUnitsCentigradeSymbol {
-            get {
-                return ResourceManager.GetString("TemperatureUnitsCentigradeSymbol", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a ºF.
-        /// </summary>
-        public static string TemperatureUnitsFahrenheitSymbol {
-            get {
-                return ResourceManager.GetString("TemperatureUnitsFahrenheitSymbol", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a The location master switch might be off or location service is unavailable..
-        /// </summary>
-        public static string UnavailableAutomaticCurrentLocationMessageBox {
-            get {
-                return ResourceManager.GetString("UnavailableAutomaticCurrentLocationMessageBox", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a http://api.openweathermap.org/data/{0}/weather?lat={1}&amp;lon={2}&amp;cnt=1.
-        /// </summary>
-        public static string URIAPIOpenWeatherMapCurrent {
-            get {
-                return ResourceManager.GetString("URIAPIOpenWeatherMapCurrent", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Busca una cadena traducida similar a http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}&amp;lon={2}&amp;cnt={3}&amp;mode=json.
-        /// </summary>
-        public static string URIAPIOpenWeatherMapForecast {
-            get {
-                return ResourceManager.GetString("URIAPIOpenWeatherMapForecast", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.resx
deleted file mode 100644 (file)
index 64e05c9..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>es</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>MI APLICACIÓN</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>agregar</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Elemento de menú</value>
-  </data>
-  <data name="SettingsLanguageHeader" xml:space="preserve">
-    <value>Idioma</value>
-    <comment>Text in settings page as header</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
-    <value>Unidades de temperatura</value>
-    <comment>Text in settings page</comment>
-  </data>
-  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
-    <value>inglés</value>
-    <comment>Settings page, select English language</comment>
-  </data>
-  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
-    <value>español</value>
-    <comment>Settings page, select Spanish language</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
-    <value>celsius</value>
-    <comment>Settings page, select tempereature units centigrade</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
-    <value>fahrenheit</value>
-    <comment>Settings page, select temperature units fahrenheit</comment>
-  </data>
-  <data name="NoticeThereIsNotCurrentLocation" xml:space="preserve">
-    <value>No hay localizaciones almacenadas.</value>
-    <comment>Main window, notice message, no available locations</comment>
-  </data>
-  <data name="NoticeErrorLocationAutodetection" xml:space="preserve">
-    <value>Detección automática de la ubicación parece estar desactivada en el teléfono</value>
-    <comment>Map window, notice message, error while location autodetection</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersHeader" xml:space="preserve">
-    <value>Prevision, numero días</value>
-    <comment>Text in settings page as header</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionTen" xml:space="preserve">
-    <value>Previsión 10 días</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionFourteen" xml:space="preserve">
-    <value>Previsión 14 días</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionFive" xml:space="preserve">
-    <value>Previsión 5 días</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="LocationPageSubTitle" xml:space="preserve">
-    <value>Ciudad, país</value>
-    <comment>Subtitle in location page</comment>
-  </data>
-  <data name="LocationPageTitle" xml:space="preserve">
-    <value>Selecciona tu localización</value>
-    <comment>Title in location page</comment>
-  </data>
-  <data name="MainPageForecastHeader" xml:space="preserve">
-    <value>previsión</value>
-    <comment>Forecast header in main page</comment>
-  </data>
-  <data name="SettingsPageHeaderSettings" xml:space="preserve">
-    <value>configuración de</value>
-    <comment>Header settings in settings page</comment>
-  </data>
-  <data name="MainPageCurrentHeader" xml:space="preserve">
-    <value>actual</value>
-    <comment>Current header in main page</comment>
-  </data>
-  <data name="MainPageTitle" xml:space="preserve">
-    <value>Ciudad, país</value>
-    <comment>Title in main page</comment>
-  </data>
-  <data name="MainPageCurrentWind" xml:space="preserve">
-    <value>VIENTO</value>
-  </data>
-  <data name="MainPageCurrentSunSet" xml:space="preserve">
-    <value>SOL SE PONE (UTC)</value>
-  </data>
-  <data name="MainPageCurrentSunRise" xml:space="preserve">
-    <value>SOL SALE (UTC)</value>
-  </data>
-  <data name="MainPageCurrentSnow" xml:space="preserve">
-    <value>NIEVE</value>
-  </data>
-  <data name="MainPageCurrentRain" xml:space="preserve">
-    <value>LLUVIA</value>
-  </data>
-  <data name="MainPageCurrentPressure" xml:space="preserve">
-    <value>PRESIÓN</value>
-  </data>
-  <data name="MainPageCurrentHumidity" xml:space="preserve">
-    <value>HUMEDAD</value>
-  </data>
-  <data name="MainPageCurrentClouds" xml:space="preserve">
-    <value>NUBES</value>
-  </data>
-  <data name="MainPageCurrentFeelsLike" xml:space="preserve">
-    <value>SIENTE COMO</value>
-  </data>
-  <data name="SelectedDatePageNight" xml:space="preserve">
-    <value>NOCHE</value>
-  </data>
-  <data name="SelectedDatePageMorning" xml:space="preserve">
-    <value>MAÑANA</value>
-  </data>
-  <data name="SelectedDatePageEvening" xml:space="preserve">
-    <value>TARDE</value>
-  </data>
-  <data name="SelectedDatePageDay" xml:space="preserve">
-    <value>DÍA</value>
-  </data>
-  <data name="MapPageSaveLocationButton" xml:space="preserve">
-    <value>Guardar posición</value>
-    <comment>Map page, button saves the user's chosen location</comment>
-  </data>
-  <data name="MapPageGetCurrentLocationButton" xml:space="preserve">
-    <value>Posición actual</value>
-    <comment>Map page, button get the user's current location</comment>
-  </data>
-  <data name="UnavailableAutomaticCurrentLocationMessageBox" xml:space="preserve">
-    <value>Detección automática de la ubicación parece estar desactivada en el teléfono o el servicio no está disponible.</value>
-    <comment>Message box error: while trying to get automatic current location</comment>
-  </data>
-  <data name="DefaultCountry" xml:space="preserve">
-    <value>País no encontrado</value>
-    <comment>Country, default value.</comment>
-  </data>
-  <data name="DefaultCity" xml:space="preserve">
-    <value>Ciudad no encontrada</value>
-    <comment>City, default value.</comment>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.es.xlf
deleted file mode 100644 (file)
index 5ca1bae..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
-  <file datatype="xml" source-language="en" target-language="es" original="AppResources.resx" tool-id="MultilingualAppToolkit" product-name="WeatherInformation" product-version="1.0.0.0" build-num="0">
-    <header>
-      <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="3.1.1085.0" tool-company="Microsoft" />
-    </header>
-    <body>
-      <group id="Resx">
-        <trans-unit id="Resx/ResourceFlowDirection" translate="yes" xml:space="preserve">
-          <source>LeftToRight</source>
-          <target state="translated">LeftToRight</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</note>
-          </trans-unit>
-        <trans-unit id="Resx/ResourceLanguage" translate="yes" xml:space="preserve">
-          <source>en</source>
-          <target state="translated">es</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</note>
-          </trans-unit>
-        <trans-unit id="Resx/ApplicationTitle" translate="yes" xml:space="preserve">
-          <source>MY APPLICATION</source>
-          <target state="translated" state-qualifier="mt-suggestion">MI APLICACIÓN</target>
-        </trans-unit>
-        <trans-unit id="Resx/AppBarButtonText" translate="yes" xml:space="preserve">
-          <source>add</source>
-          <target state="translated">agregar</target>
-        </trans-unit>
-        <trans-unit id="Resx/AppBarMenuItemText" translate="yes" xml:space="preserve">
-          <source>Menu item</source>
-          <target state="translated" state-qualifier="mt-suggestion">Elemento de menú</target>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageHeader" translate="yes" xml:space="preserve">
-          <source>Language</source>
-          <target state="translated" state-qualifier="mt-suggestion">Idioma</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsHeader" translate="yes" xml:space="preserve">
-          <source>Temperature units</source>
-          <target state="translated" state-qualifier="mt-suggestion">Unidades de temperatura</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageSelectionEnglish" translate="yes" xml:space="preserve">
-          <source>english</source>
-          <target state="translated" state-qualifier="mt-suggestion">inglés</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select English language</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageSelectionSpanish" translate="yes" xml:space="preserve">
-          <source>spanish</source>
-          <target state="translated">español</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select Spanish language</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionCentigrade" translate="yes" xml:space="preserve">
-          <source>celsius</source>
-          <target state="translated">celsius</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select tempereature units centigrade</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionFahrenheit" translate="yes" xml:space="preserve">
-          <source>fahrenheit</source>
-          <target state="translated">fahrenheit</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select temperature units fahrenheit</note>
-          </trans-unit>
-        <trans-unit id="Resx/NoticeThereIsNotCurrentLocation" translate="yes" xml:space="preserve">
-          <source>There is not stored locations.</source>
-          <target state="translated">No hay localizaciones almacenadas.</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Main window, notice message, no available locations</note>
-          </trans-unit>
-        <trans-unit id="Resx/NoticeErrorLocationAutodetection" translate="yes" xml:space="preserve">
-          <source>Location autodetection seems to be disabled in your phone</source>
-          <target state="translated">Detección automática de la ubicación parece estar desactivada en el teléfono</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map window, notice message, error while location autodetection</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersHeader" translate="yes" xml:space="preserve">
-          <source>Forecast day numbers</source>
-          <target state="translated">Prevision, numero días</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionTen" translate="yes" xml:space="preserve">
-          <source>10-Day Forecast</source>
-          <target state="translated">Previsión 10 días</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFourteen" translate="yes" xml:space="preserve">
-          <source>14-Day Forecast</source>
-          <target state="translated">Previsión 14 días</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFive" translate="yes" xml:space="preserve">
-          <source>5-Day Forecast</source>
-          <target state="translated">Previsión 5 días</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-          </trans-unit>
-        <trans-unit id="Resx/TemperatureUnitsFahrenheitSymbol" translate="no" xml:space="preserve">
-          <source>ºF</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">º F</target>
-        </trans-unit>
-        <trans-unit id="Resx/LocationPageSubTitle" translate="yes" xml:space="preserve">
-          <source>City, country</source>
-          <target state="translated" state-qualifier="mt-suggestion">Ciudad, país</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Subtitle in location page</note>
-          </trans-unit>
-        <trans-unit id="Resx/LocationPageTitle" translate="yes" xml:space="preserve">
-          <source>Pick your location</source>
-          <target state="translated">Selecciona tu localización</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Title in location page</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageForecastHeader" translate="yes" xml:space="preserve">
-          <source>forecast</source>
-          <target state="translated" state-qualifier="mt-suggestion">previsión</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Forecast header in main page</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsPageHeaderSettings" translate="yes" xml:space="preserve">
-          <source>settings</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">configuración de</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Header settings in settings page</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageTitle" translate="yes" xml:space="preserve">
-          <source>City, country</source>
-          <target state="translated">Ciudad, país</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Title in main page</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentWind" translate="yes" xml:space="preserve">
-          <source>WIND</source>
-          <target state="translated">VIENTO</target>
-        </trans-unit>
-        <trans-unit id="Resx/URIAPIOpenWeatherMapCurrent" translate="no" xml:space="preserve">
-          <source>http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</source>
-          <target state="new">http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentWindUnits" translate="yes" xml:space="preserve">
-          <source>m/s</source>
-          <target state="new">m/s</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentPressureUnits" translate="yes" xml:space="preserve">
-          <source>hpa</source>
-          <target state="new">hpa</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageNight" translate="yes" xml:space="preserve">
-          <source>NIGHT</source>
-          <target state="translated">NOCHE</target>
-        </trans-unit>
-        <trans-unit id="Resx/APIOpenWeatherMapResultsNumber" translate="yes" xml:space="preserve">
-          <source>14</source>
-          <target state="new">14</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-        <trans-unit id="Resx/MapPageSaveLocationButton" translate="yes" xml:space="preserve">
-          <source>Save Location</source>
-          <target state="translated">Guardar posición</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button saves the user's chosen location</note>
-          </trans-unit>
-        <trans-unit id="Resx/MapPageGetCurrentLocationButton" translate="yes" xml:space="preserve">
-          <source>Current Location</source>
-          <target state="translated">Posición actual</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button get the user's current location</note>
-          </trans-unit>
-        <trans-unit id="Resx/DefaultCountry" translate="yes" xml:space="preserve">
-          <source>Country not found</source>
-          <target state="translated">País no encontrado</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Country, default value.</note>
-          </trans-unit>
-        <trans-unit id="Resx/DefaultCity" translate="yes" xml:space="preserve">
-          <source>City not found</source>
-          <target state="translated">Ciudad no encontrada</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">City, default value.</note>
-          </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageMorning" translate="yes" xml:space="preserve">
-          <source>MORNING</source>
-          <target state="translated">MAÑANA</target>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageEvening" translate="yes" xml:space="preserve">
-          <source>EVENING</source>
-          <target state="translated">TARDE</target>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageDay" translate="yes" xml:space="preserve">
-          <source>DAY</source>
-          <target state="translated">DÍA</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSnowUnits" translate="yes" xml:space="preserve">
-          <source>mm 3h</source>
-          <target state="new">mm 3h</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentRainUnits" translate="yes" xml:space="preserve">
-          <source>mm 3h</source>
-          <target state="new">mm 3h</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHumidityUnits" translate="yes" xml:space="preserve">
-          <source>%</source>
-          <target state="new">%</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentCloudsUnits" translate="yes" xml:space="preserve">
-          <source>%</source>
-          <target state="new">%</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSunSet" translate="yes" xml:space="preserve">
-          <source>SUN SET (UTC)</source>
-          <target state="translated">SOL SE PONE (UTC)</target></trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSunRise" translate="yes" xml:space="preserve">
-          <source>SUN RISE (UTC)</source>
-          <target state="translated">SOL SALE (UTC)</target></trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSnow" translate="yes" xml:space="preserve">
-          <source>SNOW</source>
-          <target state="translated">NIEVE</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentRain" translate="yes" xml:space="preserve">
-          <source>RAIN</source>
-          <target state="translated">LLUVIA</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentPressure" translate="yes" xml:space="preserve">
-          <source>PRESSURE</source>
-          <target state="translated">PRESIÓN</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHumidity" translate="yes" xml:space="preserve">
-          <source>HUMIDITY</source>
-          <target state="translated">HUMEDAD</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentFeelsLike" translate="yes" xml:space="preserve">
-          <source>FEELS LIKE</source>
-          <target state="translated">SIENTE COMO</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentClouds" translate="yes" xml:space="preserve">
-          <source>CLOUDS</source>
-          <target state="translated">NUBES</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHeader" translate="yes" xml:space="preserve">
-          <source>current</source>
-          <target state="translated" state-qualifier="mt-suggestion">actual</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Current header in main page</note>
-          </trans-unit>
-        <trans-unit id="Resx/TemperatureUnitsCentigradeSymbol" translate="no" xml:space="preserve">
-          <source>ºC</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">º C</target>
-        </trans-unit>
-        <trans-unit id="Resx/APIVersionOpenWeatherMap" translate="no" xml:space="preserve">
-          <source>2.5</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">2.5</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-        <trans-unit id="Resx/UnavailableAutomaticCurrentLocationMessageBox" translate="yes" xml:space="preserve">
-          <source>The location master switch might be off or location service is unavailable.</source>
-          <target state="translated">Detección automática de la ubicación parece estar desactivada en el teléfono o el servicio no está disponible.</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Message box error: while trying to get automatic current location</note>
-          </trans-unit>
-        <trans-unit id="Resx/URIAPIOpenWeatherMapForecast" translate="no" xml:space="preserve">
-          <source>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">http://API.openweathermap.org/Data/ {0} / previsión/diario? lat = {1}%%amp;lon = {2}%%amp;cnt = {3}%%amp;mode = json</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-          </trans-unit>
-      </group>
-    </body>
-  </file>
-</xliff>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.resx
deleted file mode 100644 (file)
index be39ccb..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>qps-ploc</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>[1BD7D][!!_МĮ ÀРĽÌĆÃČÌÓŇ_!!]</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>[C3F82][!!_àġřéģàŕ_!!]</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>[01F8F][!!_Êĺèmèиţô ðé мèйú_!!]</value>
-  </data>
-  <data name="SettingsLanguageHeader" xml:space="preserve">
-    <value>[D9E46][!!_Ļàйģûáğè_!!]</value>
-    <comment>Text in settings page as header</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
-    <value>[27946][!!_Ţêmþêŗáτúřê ûиìтş_!!]</value>
-    <comment>Text in settings page</comment>
-  </data>
-  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
-    <value>[6390E][!!_įиģľéş_!!]</value>
-    <comment>Settings page, select English language</comment>
-  </data>
-  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
-    <value>[3FC2A][!!_éŝрáñóľ_!!]</value>
-    <comment>Settings page, select Spanish language</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
-    <value>[EFA86][!!_ćęηťíğŕãďõ_!!]</value>
-    <comment>Settings page, select tempereature units centigrade</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
-    <value>[9AF14][!!_ƒáĥřêηĥęîţ_!!]</value>
-    <comment>Settings page, select temperature units fahrenheit</comment>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.qps-ploc.xlf
deleted file mode 100644 (file)
index d40fbf3..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
-  <file datatype="xml" source-language="en" target-language="qps-ploc" original="AppResources.resx" tool-id="MultilingualAppToolkit" product-name="WeatherInformation" product-version="1.0.0.0" build-num="0">
-    <header>
-      <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="3.1.1085.0" tool-company="Microsoft" />
-    </header>
-    <body>
-      <group id="Resx">
-        <trans-unit id="Resx/ResourceFlowDirection" translate="yes" xml:space="preserve">
-          <source>LeftToRight</source>
-          <target state="translated">LeftToRight</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</note>
-          </trans-unit>
-        <trans-unit id="Resx/ResourceLanguage" translate="yes" xml:space="preserve">
-          <source>en</source>
-          <target state="translated">qps-ploc</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</note>
-          </trans-unit>
-        <trans-unit id="Resx/ApplicationTitle" translate="yes" xml:space="preserve">
-          <source>MY APPLICATION</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[1BD7D][!!_МĮ ÀРĽÌĆÃČÌÓŇ_!!]</target>
-        </trans-unit>
-        <trans-unit id="Resx/AppBarButtonText" translate="yes" xml:space="preserve">
-          <source>add</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[C3F82][!!_àġřéģàŕ_!!]</target>
-        </trans-unit>
-        <trans-unit id="Resx/AppBarMenuItemText" translate="yes" xml:space="preserve">
-          <source>Menu item</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[01F8F][!!_Êĺèmèиţô ðé мèйú_!!]</target>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsHeader" translate="yes" xml:space="preserve">
-          <source>Temperature units</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[27946][!!_Ţêmþêŗáτúřê ûиìтş_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageSelectionSpanish" translate="yes" xml:space="preserve">
-          <source>spanish</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[3FC2A][!!_éŝрáñóľ_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select Spanish language</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionFahrenheit" translate="yes" xml:space="preserve">
-          <source>fahrenheit</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[9AF14][!!_ƒáĥřêηĥęîţ_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select temperature units fahrenheit</note>
-          </trans-unit>
-        <trans-unit id="Resx/NoticeThereIsNotCurrentLocation" translate="yes" xml:space="preserve">
-          <source>There is not stored locations.</source>
-          <target state="new">There is not stored locations.</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Main window, notice message, no available locations</note>
-        </trans-unit>
-        <trans-unit id="Resx/NoticeErrorLocationAutodetection" translate="yes" xml:space="preserve">
-          <source>Location autodetection seems to be disabled in your phone</source>
-          <target state="new">Location autodetection seems to be disabled in your phone</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map window, notice message, error while location autodetection</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersHeader" translate="yes" xml:space="preserve">
-          <source>Forecast day numbers</source>
-          <target state="new">Forecast day numbers</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionTen" translate="yes" xml:space="preserve">
-          <source>10-Day Forecast</source>
-          <target state="new">10-Day Forecast</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFourteen" translate="yes" xml:space="preserve">
-          <source>14-Day Forecast</source>
-          <target state="new">14-Day Forecast</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsForecastDayNumbersSelectionFive" translate="yes" xml:space="preserve">
-          <source>5-Day Forecast</source>
-          <target state="new">5-Day Forecast</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select forecast day numbers</note>
-        </trans-unit>
-        <trans-unit id="Resx/TemperatureUnitsFahrenheitSymbol" translate="yes" xml:space="preserve">
-          <source>ºF</source>
-          <target state="new">ºF</target>
-        </trans-unit>
-        <trans-unit id="Resx/LocationPageSubTitle" translate="yes" xml:space="preserve">
-          <source>City, country</source>
-          <target state="new">City, country</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Subtitle in location page</note>
-        </trans-unit>
-        <trans-unit id="Resx/LocationPageTitle" translate="yes" xml:space="preserve">
-          <source>Pick your location</source>
-          <target state="new">Pick your location</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Title in location page</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageForecastHeader" translate="yes" xml:space="preserve">
-          <source>forecast</source>
-          <target state="new">forecast</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Forecast header in main page</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsPageHeaderSettings" translate="yes" xml:space="preserve">
-          <source>settings</source>
-          <target state="new">settings</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Header settings in settings page</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageTitle" translate="yes" xml:space="preserve">
-          <source>City, country</source>
-          <target state="new">City, country</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Title in main page</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentWind" translate="yes" xml:space="preserve">
-          <source>WIND</source>
-          <target state="new">WIND</target>
-        </trans-unit>
-        <trans-unit id="Resx/URIAPIOpenWeatherMapCurrent" translate="yes" xml:space="preserve">
-          <source>http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</source>
-          <target state="new">http://api.openweathermap.org/data/{0}/weather?lat={1}%%amp;lon={2}%%amp;cnt=1</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentWindUnits" translate="yes" xml:space="preserve">
-          <source>m/s</source>
-          <target state="new">m/s</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentPressureUnits" translate="yes" xml:space="preserve">
-          <source>hpa</source>
-          <target state="new">hpa</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageNight" translate="yes" xml:space="preserve">
-          <source>NIGHT</source>
-          <target state="new">NIGHT</target>
-        </trans-unit>
-        <trans-unit id="Resx/APIOpenWeatherMapResultsNumber" translate="yes" xml:space="preserve">
-          <source>14</source>
-          <target state="new">14</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/MapPageSaveLocationButton" translate="yes" xml:space="preserve">
-          <source>Save Location</source>
-          <target state="new">Save Location</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button saves the user's chosen location</note>
-        </trans-unit>
-        <trans-unit id="Resx/MapPageGetCurrentLocationButton" translate="yes" xml:space="preserve">
-          <source>Current Location</source>
-          <target state="new">Current Location</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Map page, button get the user's current location</note>
-        </trans-unit>
-        <trans-unit id="Resx/DefaultCountry" translate="yes" xml:space="preserve">
-          <source>Country not found</source>
-          <target state="new">Country not found</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Country, default value.</note>
-        </trans-unit>
-        <trans-unit id="Resx/DefaultCity" translate="yes" xml:space="preserve">
-          <source>City not found</source>
-          <target state="new">City not found</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">City, default value.</note>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageMorning" translate="yes" xml:space="preserve">
-          <source>MORNING</source>
-          <target state="new">MORNING</target>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageEvening" translate="yes" xml:space="preserve">
-          <source>EVENING</source>
-          <target state="new">EVENING</target>
-        </trans-unit>
-        <trans-unit id="Resx/SelectedDatePageDay" translate="yes" xml:space="preserve">
-          <source>DAY</source>
-          <target state="new">DAY</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSnowUnits" translate="yes" xml:space="preserve">
-          <source>mm 3h</source>
-          <target state="new">mm 3h</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentRainUnits" translate="yes" xml:space="preserve">
-          <source>mm 3h</source>
-          <target state="new">mm 3h</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHumidityUnits" translate="yes" xml:space="preserve">
-          <source>%</source>
-          <target state="new">%</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentCloudsUnits" translate="yes" xml:space="preserve">
-          <source>%</source>
-          <target state="new">%</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSunSet" translate="yes" xml:space="preserve">
-          <source>SUN SET (UTC)</source>
-          <target state="new">SUN SET (UTC)</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSunRise" translate="yes" xml:space="preserve">
-          <source>SUN RISE (UTC)</source>
-          <target state="new">SUN RISE (UTC)</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentSnow" translate="yes" xml:space="preserve">
-          <source>SNOW</source>
-          <target state="new">SNOW</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentRain" translate="yes" xml:space="preserve">
-          <source>RAIN</source>
-          <target state="new">RAIN</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentPressure" translate="yes" xml:space="preserve">
-          <source>PRESSURE</source>
-          <target state="new">PRESSURE</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHumidity" translate="yes" xml:space="preserve">
-          <source>HUMIDITY</source>
-          <target state="new">HUMIDITY</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentFeelsLike" translate="yes" xml:space="preserve">
-          <source>FEELS LIKE</source>
-          <target state="new">FEELS LIKE</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentClouds" translate="yes" xml:space="preserve">
-          <source>CLOUDS</source>
-          <target state="new">CLOUDS</target>
-        </trans-unit>
-        <trans-unit id="Resx/MainPageCurrentHeader" translate="yes" xml:space="preserve">
-          <source>current</source>
-          <target state="new">current</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Current header in main page</note>
-        </trans-unit>
-        <trans-unit id="Resx/TemperatureUnitsCentigradeSymbol" translate="yes" xml:space="preserve">
-          <source>ºC</source>
-          <target state="new">ºC</target>
-        </trans-unit>
-        <trans-unit id="Resx/APIVersionOpenWeatherMap" translate="yes" xml:space="preserve">
-          <source>2.5</source>
-          <target state="new">2.5</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/UnavailableAutomaticCurrentLocationMessageBox" translate="yes" xml:space="preserve">
-          <source>The location master switch might be off or location service is unavailable.</source>
-          <target state="new">The location master switch might be off or location service is unavailable.</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Message box error: while trying to get automatic current location</note>
-        </trans-unit>
-        <trans-unit id="Resx/URIAPIOpenWeatherMapForecast" translate="yes" xml:space="preserve">
-          <source>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</source>
-          <target state="new">http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}%%amp;lon={2}%%amp;cnt={3}%%amp;mode=json</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Not to be translated.</note>
-        </trans-unit>
-        <trans-unit id="Resx/SettingsTemperatureUnitsSelectionCentigrade" translate="yes" xml:space="preserve">
-          <source>celsius</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[EFA86][!!_ćęηťíğŕãďõ_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select tempereature units centigrade</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageSelectionEnglish" translate="yes" xml:space="preserve">
-          <source>english</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[6390E][!!_įиģľéş_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Settings page, select English language</note>
-          </trans-unit>
-        <trans-unit id="Resx/SettingsLanguageHeader" translate="yes" xml:space="preserve">
-          <source>Language</source>
-          <target state="needs-review-translation" state-qualifier="mt-suggestion">[D9E46][!!_Ļàйģûáğè_!!]</target>
-          <note from="MultilingualBuild" annotates="source" priority="2">Text in settings page as header</note>
-          </trans-unit>
-      </group>
-    </body>
-  </file>
-</xliff>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.resx b/WindowsPhone/WeatherInformation/WeatherInformation/Resources/AppResources.resx
deleted file mode 100644 (file)
index 232519c..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="ResourceFlowDirection" xml:space="preserve">
-    <value>LeftToRight</value>
-    <comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
-  </data>
-  <data name="ResourceLanguage" xml:space="preserve">
-    <value>en</value>
-    <comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
-  </data>
-  <data name="ApplicationTitle" xml:space="preserve">
-    <value>MY APPLICATION</value>
-  </data>
-  <data name="AppBarButtonText" xml:space="preserve">
-    <value>add</value>
-  </data>
-  <data name="AppBarMenuItemText" xml:space="preserve">
-    <value>Menu item</value>
-  </data>
-  <data name="SettingsLanguageHeader" xml:space="preserve">
-    <value>Language</value>
-    <comment>Text in settings page as header</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsHeader" xml:space="preserve">
-    <value>Temperature units</value>
-    <comment>Text in settings page</comment>
-  </data>
-  <data name="SettingsLanguageSelectionEnglish" xml:space="preserve">
-    <value>english</value>
-    <comment>Settings page, select English language</comment>
-  </data>
-  <data name="SettingsLanguageSelectionSpanish" xml:space="preserve">
-    <value>spanish</value>
-    <comment>Settings page, select Spanish language</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionCentigrade" xml:space="preserve">
-    <value>celsius</value>
-    <comment>Settings page, select tempereature units centigrade</comment>
-  </data>
-  <data name="SettingsTemperatureUnitsSelectionFahrenheit" xml:space="preserve">
-    <value>fahrenheit</value>
-    <comment>Settings page, select temperature units fahrenheit</comment>
-  </data>
-  <data name="URIAPIOpenWeatherMapForecast" xml:space="preserve">
-    <value>http://api.openweathermap.org/data/{0}/forecast/daily?lat={1}&amp;lon={2}&amp;cnt={3}&amp;mode=json</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="APIVersionOpenWeatherMap" xml:space="preserve">
-    <value>2.5</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="UnavailableAutomaticCurrentLocationMessageBox" xml:space="preserve">
-    <value>The location master switch might be off or location service is unavailable.</value>
-    <comment>Message box error: while trying to get automatic current location</comment>
-  </data>
-  <data name="NoticeThereIsNotCurrentLocation" xml:space="preserve">
-    <value>There is not stored locations.</value>
-    <comment>Main window, notice message, no available locations</comment>
-  </data>
-  <data name="NoticeErrorLocationAutodetection" xml:space="preserve">
-    <value>Location autodetection seems to be disabled in your phone</value>
-    <comment>Map window, notice message, error while location autodetection</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersHeader" xml:space="preserve">
-    <value>Forecast day numbers</value>
-    <comment>Text in settings page as header</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionFive" xml:space="preserve">
-    <value>5-Day Forecast</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionFourteen" xml:space="preserve">
-    <value>14-Day Forecast</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="SettingsForecastDayNumbersSelectionTen" xml:space="preserve">
-    <value>10-Day Forecast</value>
-    <comment>Settings page, select forecast day numbers</comment>
-  </data>
-  <data name="TemperatureUnitsCentigradeSymbol" xml:space="preserve">
-    <value>ºC</value>
-  </data>
-  <data name="TemperatureUnitsFahrenheitSymbol" xml:space="preserve">
-    <value>ºF</value>
-  </data>
-  <data name="LocationPageSubTitle" xml:space="preserve">
-    <value>City, country</value>
-    <comment>Subtitle in location page</comment>
-  </data>
-  <data name="LocationPageTitle" xml:space="preserve">
-    <value>Pick your location</value>
-    <comment>Title in location page</comment>
-  </data>
-  <data name="MainPageCurrentHeader" xml:space="preserve">
-    <value>current</value>
-    <comment>Current header in main page</comment>
-  </data>
-  <data name="MainPageForecastHeader" xml:space="preserve">
-    <value>forecast</value>
-    <comment>Forecast header in main page</comment>
-  </data>
-  <data name="SettingsPageHeaderSettings" xml:space="preserve">
-    <value>settings</value>
-    <comment>Header settings in settings page</comment>
-  </data>
-  <data name="MainPageTitle" xml:space="preserve">
-    <value>City, country</value>
-    <comment>Title in main page</comment>
-  </data>
-  <data name="MainPageCurrentClouds" xml:space="preserve">
-    <value>CLOUDS</value>
-  </data>
-  <data name="MainPageCurrentFeelsLike" xml:space="preserve">
-    <value>FEELS LIKE</value>
-  </data>
-  <data name="MainPageCurrentHumidity" xml:space="preserve">
-    <value>HUMIDITY</value>
-  </data>
-  <data name="MainPageCurrentPressure" xml:space="preserve">
-    <value>PRESSURE</value>
-  </data>
-  <data name="MainPageCurrentRain" xml:space="preserve">
-    <value>RAIN</value>
-  </data>
-  <data name="MainPageCurrentSnow" xml:space="preserve">
-    <value>SNOW</value>
-  </data>
-  <data name="MainPageCurrentSunRise" xml:space="preserve">
-    <value>SUN RISE (UTC)</value>
-  </data>
-  <data name="MainPageCurrentSunSet" xml:space="preserve">
-    <value>SUN SET (UTC)</value>
-  </data>
-  <data name="MainPageCurrentWind" xml:space="preserve">
-    <value>WIND</value>
-  </data>
-  <data name="URIAPIOpenWeatherMapCurrent" xml:space="preserve">
-    <value>http://api.openweathermap.org/data/{0}/weather?lat={1}&amp;lon={2}&amp;cnt=1</value>
-    <comment>Not to be translated</comment>
-  </data>
-  <data name="MainPageCurrentCloudsUnits" xml:space="preserve">
-    <value>%</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="MainPageCurrentHumidityUnits" xml:space="preserve">
-    <value>%</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="MainPageCurrentRainUnits" xml:space="preserve">
-    <value>mm 3h</value>
-  </data>
-  <data name="MainPageCurrentSnowUnits" xml:space="preserve">
-    <value>mm 3h</value>
-  </data>
-  <data name="MainPageCurrentWindUnits" xml:space="preserve">
-    <value>m/s</value>
-  </data>
-  <data name="MainPageCurrentPressureUnits" xml:space="preserve">
-    <value>hpa</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="SelectedDatePageDay" xml:space="preserve">
-    <value>DAY</value>
-  </data>
-  <data name="SelectedDatePageEvening" xml:space="preserve">
-    <value>EVENING</value>
-  </data>
-  <data name="SelectedDatePageMorning" xml:space="preserve">
-    <value>MORNING</value>
-  </data>
-  <data name="SelectedDatePageNight" xml:space="preserve">
-    <value>NIGHT</value>
-  </data>
-  <data name="APIOpenWeatherMapResultsNumber" xml:space="preserve">
-    <value>14</value>
-    <comment>Not to be translated.</comment>
-  </data>
-  <data name="MapPageSaveLocationButton" xml:space="preserve">
-    <value>Save Location</value>
-    <comment>Map page, button saves the user's chosen location</comment>
-  </data>
-  <data name="MapPageGetCurrentLocationButton" xml:space="preserve">
-    <value>Current Location</value>
-    <comment>Map page, button get the user's current location</comment>
-  </data>
-  <data name="DefaultCity" xml:space="preserve">
-    <value>City not found</value>
-    <comment>City, default value.</comment>
-  </data>
-  <data name="DefaultCountry" xml:space="preserve">
-    <value>Country not found</value>
-    <comment>Country, default value.</comment>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/SampleData/MainViewModelSampleData.xaml
deleted file mode 100644 (file)
index 6bdfb9e..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<vm:MainViewModel
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:vm="clr-namespace:WeatherInformation.ViewModels"
-    TitleTextCityCountry="City,country"
-    CurrentWeatherImagePath="/Images/weather_clear.png"
-    CurrentMaxTemp="25"
-    CurrentMaxTempUnits="ºC"
-    CurrentMinTemp="15"
-    CurrentFeelsLikeTemp="20"
-    CurrentFeelsLikeText="FEELS LIKE"
-    CurrentPressure="1015"
-    CurrentPressureText="PRESSURE"
-    CurrentRain="10"
-    CurrentRainText="RAIN"
-    CurrentSnow="10"
-    CurrentSnowText="SNOW"
-    CurrentSunRiseText="SUN RISE (UTC)"
-    CurrentSunRise="2014.07.19 07:01:54"
-    CurrentSunSetText="SUN SET (UTC)"
-    CurrentSunSet="2014.07.19 21:41:40"
-    CurrentWind="1.03"
-    CurrentWindText="WIND"
-    CurrentConditions="Sky is Clear"
-    CurrentCloudsText="CLOUDS"
-    CurrentClouds="10"
-    CurrentHumidity="50"
-    CurrentHumidityText="HUMIDITY"
-    CurrentMinTempUnits="ºC"
-    CurrentPressureUnits="hpa"
-    CurrentRainUnits="mm 3h"
-    CurrentSnowUnits="mm 3h"
-    CurrentWindUnits="m/s"
-    CurrentHumidityUnits="%"
-    CurrentFeelsLikeTempUnits="ºC"
-    CurrentCloudsUnits="%">
-
-    <vm:MainViewModel.ForecastItems>
-        <vm:ItemViewModel LineOne="MON" LineTwo="1" LineThree="15ºC" LineFour="10ºC" LineFive="/Images/weather_clear.png"/>
-        <vm:ItemViewModel LineOne="TUE" LineTwo="2" LineThree="16ºC" LineFour="10ºC" LineFive="/Images/weather_clear_night.png"/>
-        <vm:ItemViewModel LineOne="WED" LineTwo="3" LineThree="14ºC" LineFour="10ºC" LineFive="/Images/weather_few_clouds.png"/>
-        <vm:ItemViewModel LineOne="THU" LineTwo="4" LineThree="12ºC" LineFour="10ºC" LineFive="/Images/weather_few_clouds_night.png"/>
-        <vm:ItemViewModel LineOne="FRI" LineTwo="5" LineThree="13ºC" LineFour="10ºC" LineFive="/Images/weather_fog.png"/>
-        <vm:ItemViewModel LineOne="SAT" LineTwo="6" LineThree="20ºC" LineFour="10ºC" LineFive="/Images/weather_overcast.png"/>
-    </vm:MainViewModel.ForecastItems>
-    
-
-</vm:MainViewModel>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/SampleData/SelectedDateViewModelSampleData.xaml
deleted file mode 100644 (file)
index bc26817..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<ViewModels:SelectedDateViewModel
-    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
-    TitleTextCityCountry="City,country"
-    SelectedDate="July 27"
-    SelectedDateWeatherImagePath="/Images/weather_clear.png"
-    SelectedDateRainText="RAIN"
-    SelectedDateMaxTempUnits="ºC"
-    SelectedDateCloudsText="CLOUDS"
-    SelectedDatePressureText="PRESSURE"
-    SelectedDatePressure="1015"
-    SelectedDateWindText="WIND"
-    SelectedDateConditions="Sky is Clear"
-    SelectedDateWind="1.03"
-    SelectedDateWindUnits="m/s"
-    SelectedDateMinTempUnits="ºC"
-    SelectedDateHumidityUnits="%"
-    SelectedDateRain="10"
-    SelectedDateHumidity="50"
-    SelectedDateMaxTemp="25"
-    SelectedDateMorningTempText="MORNING"
-    SelectedDateMorningTemp="25"
-    SelectedDateMorningTempUnits="ºC"
-    SelectedDateDayTempText="DAY"
-    SelectedDateDayTemp="25"
-    SelectedDateDayTempUnits="ºC"
-    SelectedDateEveningTempText="EVENING"
-    SelectedDateEveningTemp="25"
-    SelectedDateEveningTempUnits="ºC"
-    SelectedDateNightTempText="NIGHT"
-    SelectedDateNightTemp="25"
-    SelectedDateNightTempUnits="ºC"
-    SelectedDatePressureUnits="hpa"
-    SelectedDateClouds="10"
-    SelectedDateRainUnits="mm 3h"
-    SelectedDateMinTemp="15"
-    SelectedDateHumidityText="HUMIDITY"
-    SelectedDateCloudsUnits="%"/>
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml
deleted file mode 100644 (file)
index 42302e1..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<phone:PhoneApplicationPage
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
-    x:Class="WeatherInformation.SelectedDate"
-    mc:Ignorable="d"
-    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
-    shell:SystemTray.IsVisible="True"
-    d:DataContext="{d:DesignData /SampleData/SelectedDateViewModelSampleData.xaml}">
-
-       <phone:PhoneApplicationPage.FontFamily>
-               <StaticResource ResourceKey="PhoneFontFamilyNormal"/>
-       </phone:PhoneApplicationPage.FontFamily>
-       <phone:PhoneApplicationPage.FontSize>
-               <StaticResource ResourceKey="PhoneFontSizeNormal"/>
-       </phone:PhoneApplicationPage.FontSize>
-       <phone:PhoneApplicationPage.Foreground>
-               <StaticResource ResourceKey="PhoneForegroundBrush"/>
-       </phone:PhoneApplicationPage.Foreground>
-<!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
-       <Grid x:Name="LayoutRoot" Background="Transparent">
-        <!--Control Pivot-->
-               <phone:Pivot x:Name="TitleTextCityCountry" Title="{Binding TitleTextCityCountry}">
-                       <!--Elemento Pivot uno-->
-                       <phone:PivotItem Header="{Binding SelectedDate}">
-                <ScrollViewer HorizontalScrollBarVisibility="Auto">
-                    <Grid>
-                        <Grid.RowDefinitions>
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                            <RowDefinition Height="*" />
-                        </Grid.RowDefinitions>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="*" />
-                        </Grid.ColumnDefinitions>
-                        <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Image Source="{Binding SelectedDateWeatherImagePath}" Width="100" Height="100" Margin="12,0" />
-                            <StackPanel  Orientation="Vertical" VerticalAlignment="Center">
-                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding SelectedDateMaxTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                    <TextBlock Text="{Binding SelectedDateMaxTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                </StackPanel>
-                                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
-                                    <TextBlock Text="{Binding SelectedDateMinTemp}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                    <TextBlock Text="{Binding SelectedDateMinTempUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                                </StackPanel>
-                            </StackPanel>
-                        </StackPanel>
-                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,28,0,0">
-                            <TextBlock Text="{Binding SelectedDateConditions}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold"/>
-                        </StackPanel>
-
-                        <Grid Grid.Column="0" Grid.Row="2" Margin="0,28,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding SelectedDateHumidityText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding SelectedDateHumidity}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding SelectedDateHumidityUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
-                                <TextBlock Text="{Binding SelectedDateWindText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding SelectedDateWind}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding SelectedDateWindUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                        </Grid>
-                        <Grid Grid.Column="0" Grid.Row="3" Margin="0,28,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding SelectedDateRainText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding SelectedDateRain}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding SelectedDateRainUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                                <TextBlock Text="{Binding SelectedDateCloudsText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2,0"/>
-                                <TextBlock Text="{Binding SelectedDateClouds}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,2,0"/>
-                                <TextBlock Text="{Binding SelectedDateCloudsUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Margin="2,0"/>
-                            </StackPanel>
-                        </Grid>
-                        <StackPanel Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,28,0,0">
-                            <TextBlock Text="{Binding SelectedDatePressureText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" Margin="2,0"/>
-                            <TextBlock Text="{Binding SelectedDatePressure}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Margin="10,0,2,0"/>
-                            <TextBlock Text="{Binding SelectedDatePressureUnits}" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style}" FontWeight="Bold" Margin="2,0"/>
-                        </StackPanel>
-                        <ScrollViewer Grid.Column="0" Grid.Row="5" HorizontalScrollBarVisibility="Auto" Margin="0,28,0,0">
-                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
-                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
-                                    <TextBlock Text="{Binding SelectedDateMorningTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
-                                        <TextBlock Text="{Binding SelectedDateMorningTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                        <TextBlock Text="{Binding SelectedDateMorningTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    </StackPanel>
-                                </StackPanel>
-                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
-                                    <TextBlock Text="{Binding SelectedDateDayTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
-                                        <TextBlock Text="{Binding SelectedDateDayTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                        <TextBlock Text="{Binding SelectedDateDayTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    </StackPanel>
-                                </StackPanel>
-                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
-                                    <TextBlock Text="{Binding SelectedDateEveningTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
-                                        <TextBlock Text="{Binding SelectedDateEveningTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                        <TextBlock Text="{Binding SelectedDateEveningTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    </StackPanel>
-                                </StackPanel>
-                                <StackPanel Orientation="Vertical" Margin="0,0,20,0">
-                                    <TextBlock Text="{Binding SelectedDateNightTempText}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
-                                        <TextBlock Text="{Binding SelectedDateNightTemp}" Margin="10,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                        <TextBlock Text="{Binding SelectedDateNightTempUnits}" Margin="2,0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    </StackPanel>
-                                </StackPanel>
-                            </StackPanel>
-                        </ScrollViewer>
-                    </Grid>
-                </ScrollViewer>
-            </phone:PivotItem>
-
-               </phone:Pivot>
-       </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs b/WindowsPhone/WeatherInformation/WeatherInformation/SelectedDatePage.xaml.cs
deleted file mode 100644 (file)
index cdf906c..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-using Microsoft.Phone.Controls;
-using System;
-using System.Globalization;
-using System.IO.IsolatedStorage;
-using System.Windows;
-using WeatherInformation.Model;
-using WeatherInformation.Resources;
-using WeatherInformation.ViewModels;
-
-namespace WeatherInformation
-{
-    public partial class SelectedDate : PhoneApplicationPage
-    {
-        private SelectedDateViewModel _selectedDateViewModel;
-        private bool _isNewPageInstance = false;
-
-        public SelectedDate()
-        {
-            InitializeComponent();
-
-            _isNewPageInstance = true;
-        }
-
-        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
-        {
-            base.OnNavigatedTo(e);
-
-            // If _isNewPageInstance is true, the page constuctor has been called, so
-            // state may need to be restored.
-            if (_isNewPageInstance)
-            {
-                if (_selectedDateViewModel == null)
-                {
-                    _selectedDateViewModel = new SelectedDateViewModel(new SettingsViewModel());
-                }
-
-                DataContext = _selectedDateViewModel;
-            }
-            // Set _isNewPageInstance to false. If the user navigates back to this page
-            // and it has remained in memory, this value will continue to be false.
-            _isNewPageInstance = false;
-
-            // I always receive my parameter even if page was tombstoned. :)
-            string stringIndex = NavigationContext.QueryString["parameter"];
-            int index = Convert.ToInt32(stringIndex, CultureInfo.InvariantCulture);
-
-            UpdateApplicationDataUI(index);
-        }
-
-        void UpdateApplicationDataUI(int index)
-        {
-            WeatherData weatherData = (Application.Current as WeatherInformation.App).ApplicationDataObject;
-
-            if (weatherData != null)
-            {
-                _selectedDateViewModel.LoadData(weatherData, index);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml b/WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml
deleted file mode 100644 (file)
index b0555a7..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<phone:PhoneApplicationPage
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
-    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
-    xmlns:ViewModels="clr-namespace:WeatherInformation.ViewModels"
-    x:Class="WeatherInformation.SettingsPage"
-    mc:Ignorable="d"
-    SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
-    shell:SystemTray.IsVisible="True">
-
-    <phone:PhoneApplicationPage.Resources>
-        <ViewModels:SettingsViewModel x:Key="SettingsViewModelDataSource" d:IsDataSource="True"/>
-    </phone:PhoneApplicationPage.Resources>
-    <phone:PhoneApplicationPage.FontFamily>
-        <StaticResource ResourceKey="PhoneFontFamilyNormal"/>
-    </phone:PhoneApplicationPage.FontFamily>
-    <phone:PhoneApplicationPage.FontSize>
-        <StaticResource ResourceKey="PhoneFontSizeNormal"/>
-    </phone:PhoneApplicationPage.FontSize>
-    <phone:PhoneApplicationPage.Foreground>
-        <StaticResource ResourceKey="PhoneForegroundBrush"/>
-    </phone:PhoneApplicationPage.Foreground>
-    <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
-    <Grid x:Name="LayoutRoot" Background="Transparent" DataContext="{Binding Source={StaticResource SettingsViewModelDataSource}}">
-        <!-- Pivot -->
-        <phone:Pivot Title="WEATHER INFORMATION">
-            <!-- Elemento Pivot uno -->
-            <phone:PivotItem Header="{Binding LocalizedResources.SettingsPageHeaderSettings, Mode=OneWay, Source={StaticResource LocalizedStrings}}">
-                <ScrollViewer HorizontalScrollBarVisibility="Auto">
-                    <Grid VerticalAlignment="Top">
-                        <Grid.RowDefinitions>
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                        </Grid.RowDefinitions>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="*" />
-                        </Grid.ColumnDefinitions>
-                        <StackPanel Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Margin="0,30,0,0">
-                            <TextBlock x:Name="TemperatureUnitsHeader" Text="{Binding LocalizedResources.SettingsTemperatureUnitsHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
-                            <toolkit:ListPicker x:Name="TemperatureUnitsSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=TemperaruteUnitsSelectionSetting, Mode=TwoWay}" SelectionChanged="TemperatureUnitsSelection_SelectionChanged">
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsTemperatureUnitsSelectionFahrenheit, Mode=OneWay, Source={StaticResource LocalizedStrings}}" />
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsTemperatureUnitsSelectionCentigrade, Mode=OneWay, Source={StaticResource LocalizedStrings}}" />
-                            </toolkit:ListPicker>
-                        </StackPanel>
-                        <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Vertical" VerticalAlignment="Center" Margin="0,30,0,0">
-                            <TextBlock x:Name="LanguageHeader" Text="{Binding LocalizedResources.SettingsLanguageHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
-                            <toolkit:ListPicker x:Name="LanguageSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=LanguageSelectionSetting, Mode=TwoWay}" SelectionChanged="LanguageSelection_SelectionChanged">
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsLanguageSelectionEnglish, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsLanguageSelectionSpanish, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
-                            </toolkit:ListPicker>
-                        </StackPanel>
-                        <StackPanel Grid.Column="0" Grid.Row="2" Orientation="Vertical" VerticalAlignment="Center" Margin="0,30,0,0">
-                            <TextBlock x:Name="ForecastDayNumbersHeader" Text="{Binding LocalizedResources.SettingsForecastDayNumbersHeader, Mode=OneWay, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Foreground="#FFA4A2A2" Style="{StaticResource PhoneTextTitle2Style}"/>
-                            <toolkit:ListPicker x:Name="ForecastDayNumbersSelection" SelectedIndex="{Binding Source={StaticResource SettingsViewModelDataSource}, Path=ForecastDayNumbersSelectionSetting, Mode=TwoWay}" SelectionChanged="ForecastDayNumbersSelection_SelectionChanged">
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionFive, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionTen, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
-                                <toolkit:ListPickerItem Content="{Binding LocalizedResources.SettingsForecastDayNumbersSelectionFourteen, Mode=OneWay, Source={StaticResource LocalizedStrings}}"/>
-                            </toolkit:ListPicker>
-                        </StackPanel>
-                    </Grid>
-                </ScrollViewer>
-            </phone:PivotItem>
-
-            <!--Elemento Pivot dos-->
-            <phone:PivotItem Header="notifications">
-                <phone:LongListSelector Margin="0,0,-12,0">
-                    <phone:LongListSelector.ItemTemplate>
-                        <DataTemplate>
-                        </DataTemplate>
-                    </phone:LongListSelector.ItemTemplate>
-                </phone:LongListSelector>
-            </phone:PivotItem>
-
-        </phone:Pivot>
-    </Grid>
-
-</phone:PhoneApplicationPage>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs b/WindowsPhone/WeatherInformation/WeatherInformation/SettingsPage.xaml.cs
deleted file mode 100644 (file)
index 52fb429..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Windows.Controls;
-using Microsoft.Phone.Controls;
-
-namespace WeatherInformation
-{
-    public partial class SettingsPage : PhoneApplicationPage
-    {
-
-        public SettingsPage()
-        {
-            InitializeComponent();
-        }
-
-        /// <summary>
-        /// Update temperature units selection when change.
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void TemperatureUnitsSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            ListPicker listPicker = sender as ListPicker;
-
-            int index = listPicker.SelectedIndex;
-            var item = listPicker.Items[index];
-            listPicker.SelectedItem = item;
-        }
-
-        /// <summary>
-        /// Update language selection when change.
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void LanguageSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            ListPicker listPicker = sender as ListPicker;
-
-            int index = listPicker.SelectedIndex;
-            var item = listPicker.Items[index];
-            listPicker.SelectedItem = item;
-        }
-
-        private void ForecastDayNumbersSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            ListPicker listPicker = sender as ListPicker;
-
-            int index = listPicker.SelectedIndex;
-            var item = listPicker.Items[index];
-            listPicker.SelectedItem = item;
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png b/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png
deleted file mode 100644 (file)
index 4b524d6..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Add.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png b/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png
deleted file mode 100644 (file)
index 4dd724f..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Cancel.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png b/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png
deleted file mode 100644 (file)
index 7a07466..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Check.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png b/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png
deleted file mode 100644 (file)
index 95bb16d..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Delete.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png b/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png
deleted file mode 100644 (file)
index 995deaa..0000000
Binary files a/WindowsPhone/WeatherInformation/WeatherInformation/Toolkit.Content/ApplicationBar.Select.png and /dev/null differ
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs b/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/ItemViewModel.cs
deleted file mode 100644 (file)
index ea25aff..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-using System;
-using System.ComponentModel;
-
-namespace WeatherInformation.ViewModels
-{
-    public class ItemViewModel : INotifyPropertyChanged
-    {
-        private string _lineOne;
-        /// <summary>
-        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
-        /// </summary>
-        /// <returns></returns>
-        public string LineOne
-        {
-            get
-            {
-                return _lineOne;
-            }
-            set
-            {
-                if (value != _lineOne)
-                {
-                    _lineOne = value;
-                    NotifyPropertyChanged("LineOne");
-                }
-            }
-        }
-
-        private string _lineTwo;
-        /// <summary>
-        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
-        /// </summary>
-        /// <returns></returns>
-        public string LineTwo
-        {
-            get
-            {
-                return _lineTwo;
-            }
-            set
-            {
-                if (value != _lineTwo)
-                {
-                    _lineTwo = value;
-                    NotifyPropertyChanged("LineTwo");
-                }
-            }
-        }
-
-        private string _lineThree;
-        /// <summary>
-        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
-        /// </summary>
-        /// <returns></returns>
-        public string LineThree
-        {
-            get
-            {
-                return _lineThree;
-            }
-            set
-            {
-                if (value != _lineThree)
-                {
-                    _lineThree = value;
-                    NotifyPropertyChanged("LineThree");
-                }
-            }
-        }
-
-        private string _lineFour;
-        /// <summary>
-        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
-        /// </summary>
-        /// <returns></returns>
-        public string LineFour
-        {
-            get
-            {
-                return _lineFour;
-            }
-            set
-            {
-                if (value != _lineFour)
-                {
-                    _lineFour = value;
-                    NotifyPropertyChanged("LineFour");
-                }
-            }
-        }
-
-        private string _lineFive;
-        /// <summary>
-        /// Propiedad Sample MainViewModel; esta propiedad se usa en la vista para mostrar su valor mediante un enlace.
-        /// </summary>
-        /// <returns></returns>
-        public string LineFive
-        {
-            get
-            {
-                return _lineFive;
-            }
-            set
-            {
-                if (value != _lineFive)
-                {
-                    _lineFive = value;
-                    NotifyPropertyChanged("LineFive");
-                }
-            }
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-        private void NotifyPropertyChanged(String propertyName)
-        {
-            PropertyChangedEventHandler handler = PropertyChanged;
-            if (null != handler)
-            {
-                handler(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs b/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/MainViewModel.cs
deleted file mode 100644 (file)
index 09735b3..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-using System;
-using System.Collections.ObjectModel;
-using System.ComponentModel;
-using System.Globalization;
-using WeatherInformation.Model;
-using WeatherInformation.Model.Images;
-using WeatherInformation.Resources;
-
-namespace WeatherInformation.ViewModels
-{
-    public class MainViewModel : INotifyPropertyChanged
-    {
-        private readonly SettingsViewModel _settings;
-
-        public MainViewModel(SettingsViewModel settings)
-        {
-            this.ForecastItems = new ObservableCollection<ItemViewModel>();
-            this.CurrentItems = new ObservableCollection<ItemViewModel>();
-
-            // Get the _settings for this application.
-            _settings = settings;
-        }
-
-        /// <summary>
-        /// Colección para objetos ItemViewModel.
-        /// </summary>
-        public ObservableCollection<ItemViewModel> ForecastItems{ get; private set; }
-        public ObservableCollection<ItemViewModel> CurrentItems { get; private set; }
-        public String TitleTextCityCountry { get; private set; }
-        public String CurrentWeatherImagePath { get; private set; }
-        public String CurrentMaxTemp { get; private set; }
-        public String CurrentMaxTempUnits { get; private set; }
-        public String CurrentMinTemp { get; private set; }
-        public String CurrentMinTempUnits { get; private set; }
-        public String CurrentConditions { get; private set; }
-        public String CurrentFeelsLikeText { get; private set; }
-        public String CurrentFeelsLikeTemp { get; private set; }
-        public String CurrentFeelsLikeTempUnits { get; private set; }
-        public String CurrentHumidityText { get; private set; }
-        public String CurrentHumidity { get; private set; }
-        public String CurrentHumidityUnits { get; private set; }
-        public String CurrentRainText { get; private set; }
-        public String CurrentRain { get; private set; }
-        public String CurrentRainUnits { get; private set; }
-        public String CurrentSnowText { get; private set; }
-        public String CurrentSnow { get; private set; }
-        public String CurrentSnowUnits { get; private set; }
-        public String CurrentWindText { get; private set; }
-        public String CurrentWind { get; private set; }
-        public String CurrentWindUnits { get; private set; }
-        public String CurrentCloudsText { get; private set; }
-        public String CurrentClouds { get; private set; }
-        public String CurrentCloudsUnits { get; private set; }
-        public String CurrentPressureText { get; private set; }
-        public String CurrentPressure { get; private set; }
-        public String CurrentPressureUnits { get; private set; }
-        public String CurrentSunRiseText { get; private set; }
-        public String CurrentSunRise { get; private set; }
-        public String CurrentSunSetText { get; private set; }
-        public String CurrentSunSet { get; private set; }
-
-        /// <summary>
-        /// Crear y agregar unos pocos objetos ItemViewModel a la colección Items.
-        /// </summary>
-        public void LoadData(WeatherData weatherData)
-        {
-            // TODO: there must be a better way than using the index value :(
-
-            int forecastDayNumbers = _settings.ForecastDayNumbersSelectionSetting;     
-            int count;
-            switch(forecastDayNumbers)
-            {
-                case(0):
-                    count = 5;
-                    break;
-                case(1):
-                    count = 10;
-                    break;
-                case(2):
-                    count = 14;
-                    break;
-                default:
-                    count = 14;
-                    break;
-            }
-
-            // TODO: there must be a better way than using the index value :(
-            bool isFahrenheit = true;
-            int temperatureUnitsSelection = _settings.TemperaruteUnitsSelectionSetting;
-            if (temperatureUnitsSelection != 0)
-            {
-                isFahrenheit = false;
-            }
-            double tempUnits = isFahrenheit ? 0 : 273.15;
-            string symbol = isFahrenheit ? AppResources.TemperatureUnitsFahrenheitSymbol : AppResources.TemperatureUnitsCentigradeSymbol;
-            DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-
-            var remoteForecastWeatherData = weatherData.Forecast;
-            if (remoteForecastWeatherData != null)
-            {
-                this.ForecastItems.Clear();
-                
-                foreach (WeatherInformation.Model.ForecastWeatherParser.List item in remoteForecastWeatherData.list)
-                {
-                    DateTime date = unixTime.AddSeconds(item.dt);
-
-                    // TODO: if I do not receive max temp or min temp... Am I going to receive item.temp.max=0 or item.temp.min=0 (I guess because
-                    // double has no null value)
-                    // I need something that is not 0 value in order to find out if OpenWeatherMap sent me values or not :/
-                    // I guess; I am going to need nullable but I will have to modify my Json Parser :(
-                    double maxTemp = item.temp.max;
-                    maxTemp = maxTemp - tempUnits;
-
-                    double minTemp = item.temp.min;
-                    minTemp = minTemp - tempUnits;
-
-                    string weatherImage;
-                    if (item.weather.Count > 0 &&
-                        item.weather[0].icon != null &&
-                        RemoteImagesTranslation.GetTransaltedImage(item.weather[0].icon) != null)
-                    {
-                        weatherImage = RemoteImagesTranslation.GetTransaltedImage(item.weather[0].icon);
-                    }
-                    else
-                    {
-                        weatherImage = "weather_severe_alert";
-                    }
-                    string weatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
-
-                    this.ForecastItems.Add(new ItemViewModel()
-                    {
-                        LineOne = date.ToString("ddd", CultureInfo.InvariantCulture),
-                        LineTwo = date.ToString("dd", CultureInfo.InvariantCulture),
-                        LineThree = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", maxTemp) + symbol,
-                        LineFour = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", minTemp) + symbol,
-                        LineFive = weatherImagePath
-                    });
-
-                    count--;
-                    if (count == 0)
-                    {
-                        break;
-                    }
-                }
-            }
-
-            // TODO: nullables?
-            // TODO: nullables para distinguir cuando hay datos o no. Ahora me llega 0 si no datos (supongo) cuando double/integer
-
-            var remoteCurrentWeatherData = weatherData.Current;
-            if (remoteCurrentWeatherData != null)
-            {
-                string weatherImage;
-                if (remoteCurrentWeatherData.weather.Count > 0 &&
-                    remoteCurrentWeatherData.weather[0].icon != null &&
-                    RemoteImagesTranslation.GetTransaltedImage(remoteCurrentWeatherData.weather[0].icon) != null)
-                {
-                    weatherImage = RemoteImagesTranslation.GetTransaltedImage(remoteCurrentWeatherData.weather[0].icon);
-                }
-                else
-                {
-                    weatherImage = "weather_severe_alert";
-                }
-                this.CurrentWeatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
-                NotifyPropertyChanged("CurrentWeatherImagePath");
-
-                var currentMaxTemp = "";
-                if (remoteCurrentWeatherData.main != null)
-                {
-                    var conversion = remoteCurrentWeatherData.main.temp_max;
-                    conversion -= tempUnits;
-                    currentMaxTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                }
-                this.CurrentMaxTemp = currentMaxTemp;
-                this.CurrentMaxTempUnits = symbol;
-                NotifyPropertyChanged("CurrentMaxTemp");
-                NotifyPropertyChanged("CurrentMaxTempUnits");
-
-                var currentMinTemp = "";
-                if (remoteCurrentWeatherData.main != null)
-                {
-                    var conversion = remoteCurrentWeatherData.main.temp_min;
-                    conversion -= tempUnits;
-                    currentMinTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                }
-                this.CurrentMinTemp = currentMinTemp;
-                this.CurrentMinTempUnits = symbol;
-                NotifyPropertyChanged("CurrentMinTemp");
-                NotifyPropertyChanged("CurrentMinTempUnits");
-
-                // TODO: static resource :(
-                var currentConditions = "no description available";
-                if (remoteCurrentWeatherData.weather.Count > 0)
-                {
-                    currentConditions = remoteCurrentWeatherData.weather[0].description;
-                }
-                this.CurrentConditions = currentConditions;
-                NotifyPropertyChanged("CurrentConditions");
-
-                this.CurrentFeelsLikeText = AppResources.MainPageCurrentFeelsLike;
-                var currentFeelsLikeTemp = "";
-                if (remoteCurrentWeatherData.main != null)
-                {
-                    var conversion = remoteCurrentWeatherData.main.temp;
-                    conversion -= tempUnits;
-                    currentFeelsLikeTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                }
-                this.CurrentFeelsLikeTemp = currentFeelsLikeTemp;
-                this.CurrentFeelsLikeTempUnits = symbol;
-                NotifyPropertyChanged("CurrentFeelsLikeTemp");
-                NotifyPropertyChanged("CurrentFeelsLikeTempUnits");
-                NotifyPropertyChanged("CurrentFeelsLikeText");
-
-                this.CurrentHumidityText = AppResources.MainPageCurrentHumidity;
-                var currentHumidity = "";
-                if (remoteCurrentWeatherData.main != null)
-                {
-                    currentHumidity = remoteCurrentWeatherData.main.humidity.ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentHumidity = currentHumidity;
-                this.CurrentHumidityUnits = AppResources.MainPageCurrentHumidityUnits;
-                NotifyPropertyChanged("CurrentHumidity");
-                NotifyPropertyChanged("CurrentHumidityUnits");
-                NotifyPropertyChanged("CurrentHumidityText");
-
-                this.CurrentRainText = AppResources.MainPageCurrentRain;
-                var currentRain = "";
-                if (remoteCurrentWeatherData.rain != null)
-                {
-                    currentRain = remoteCurrentWeatherData.rain.get3h().ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentRain = currentRain;
-                this.CurrentRainUnits = AppResources.MainPageCurrentRainUnits;
-                NotifyPropertyChanged("CurrentRain");
-                NotifyPropertyChanged("CurrentRainUnits");
-                NotifyPropertyChanged("CurrentRainText");
-
-                this.CurrentSnowText = AppResources.MainPageCurrentSnow;
-                var currentSnow = "";
-                if (remoteCurrentWeatherData.snow != null)
-                {
-                    currentSnow = remoteCurrentWeatherData.snow.get3h().ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentSnow = currentSnow;
-                this.CurrentSnowUnits = AppResources.MainPageCurrentSnowUnits;
-                NotifyPropertyChanged("CurrentSnow");
-                NotifyPropertyChanged("CurrentSnowUnits");
-                NotifyPropertyChanged("CurrentSnowText");
-
-                this.CurrentWindText = AppResources.MainPageCurrentWind;
-                var currentWind = "";
-                if (remoteCurrentWeatherData.wind != null)
-                {
-                    currentWind = remoteCurrentWeatherData.wind.speed.ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentWind = currentWind;
-                this.CurrentWindUnits = AppResources.MainPageCurrentWindUnits;
-                NotifyPropertyChanged("CurrentWind");
-                NotifyPropertyChanged("CurrentWindUnits");
-                NotifyPropertyChanged("CurrentWindText");
-
-                this.CurrentCloudsText = AppResources.MainPageCurrentClouds;
-                var currentClouds = "";
-                if (remoteCurrentWeatherData.clouds != null)
-                {
-                    currentClouds = remoteCurrentWeatherData.clouds.all.ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentClouds = currentClouds;
-                this.CurrentCloudsUnits = AppResources.MainPageCurrentCloudsUnits;
-                NotifyPropertyChanged("CurrentClouds");
-                NotifyPropertyChanged("CurrentCloudsUnits");
-                NotifyPropertyChanged("CurrentCloudsText");
-
-                this.CurrentPressureText = AppResources.MainPageCurrentPressure;
-                var currentPressure = "";
-                if (remoteCurrentWeatherData.main != null)
-                {
-                    currentPressure = remoteCurrentWeatherData.main.pressure.ToString(CultureInfo.InvariantCulture);
-                }
-                this.CurrentPressure = currentPressure;
-                this.CurrentPressureUnits = AppResources.MainPageCurrentPressureUnits;
-                NotifyPropertyChanged("CurrentPressure");
-                NotifyPropertyChanged("CurrentPressureUnits");
-                NotifyPropertyChanged("CurrentPressureText");
-
-                this.CurrentSunRiseText = AppResources.MainPageCurrentSunRise;
-                var sunRiseTime = unixTime.AddSeconds(remoteCurrentWeatherData.sys.sunrise);
-                this.CurrentSunRise = sunRiseTime.ToString("MM/dd/yy H:mm:ss", CultureInfo.InvariantCulture);
-                NotifyPropertyChanged("CurrentSunRise");
-                NotifyPropertyChanged("CurrentSunRiseText");
-
-                this.CurrentSunSetText = AppResources.MainPageCurrentSunSet;
-                var sunSetTime = unixTime.AddSeconds(remoteCurrentWeatherData.sys.sunset);
-                this.CurrentSunSet = sunSetTime.ToString("MM/dd/yy H:mm:ss", CultureInfo.InvariantCulture);
-                NotifyPropertyChanged("CurrentSunSet");
-                NotifyPropertyChanged("CurrentSunSetText");
-
-                string country = weatherData.Country;
-                string city = weatherData.City;
-                string cityCountry = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
-                this.TitleTextCityCountry = cityCountry;
-                NotifyPropertyChanged("TitleTextCityCountry");
-            }
-
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-        private void NotifyPropertyChanged(String propertyName)
-        {
-            PropertyChangedEventHandler handler = PropertyChanged;
-            if (null != handler)
-            {
-                handler(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs b/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SelectedDateViewModel.cs
deleted file mode 100644 (file)
index c07f474..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using WeatherInformation.Model;
-using WeatherInformation.Model.Images;
-using WeatherInformation.Resources;
-
-namespace WeatherInformation.ViewModels
-{
-    public class SelectedDateViewModel : INotifyPropertyChanged
-    {
-        private readonly SettingsViewModel _settings;
-
-        public SelectedDateViewModel(SettingsViewModel settings)
-        {
-            _settings = settings;
-        }
-
-        public String TitleTextCityCountry { get; private set; }
-
-        public String SelectedDate { get; private set; }
-        public String SelectedDateWeatherImagePath { get; private set; }
-        public String SelectedDateMaxTemp { get; private set; }
-        public String SelectedDateMaxTempUnits { get; private set; }
-        public String SelectedDateMinTemp { get; private set; }
-        public String SelectedDateMinTempUnits { get; private set; }
-        public String SelectedDateMorningTempText { get; private set; }
-        public String SelectedDateMorningTemp { get; private set; }
-        public String SelectedDateMorningTempUnits { get; private set; }
-        public String SelectedDateDayTempText { get; private set; }
-        public String SelectedDateDayTemp { get; private set; }
-        public String SelectedDateDayTempUnits { get; private set; }
-        public String SelectedDateEveningTempText { get; private set; }
-        public String SelectedDateEveningTemp { get; private set; }
-        public String SelectedDateEveningTempUnits { get; private set; }
-        public String SelectedDateNightTempText { get; private set; }
-        public String SelectedDateNightTemp { get; private set; }
-        public String SelectedDateNightTempUnits { get; private set; }
-        public String SelectedDateConditions { get; private set; }
-        public String SelectedDateHumidityText { get; private set; }
-        public String SelectedDateHumidity { get; private set; }
-        public String SelectedDateHumidityUnits { get; private set; }
-        public String SelectedDateRainText { get; private set; }
-        public String SelectedDateRain { get; private set; }
-        public String SelectedDateRainUnits { get; private set; }
-        public String SelectedDateWindText { get; private set; }
-        public String SelectedDateWind { get; private set; }
-        public String SelectedDateWindUnits { get; private set; }
-        public String SelectedDateCloudsText { get; private set; }
-        public String SelectedDateClouds { get; private set; }
-        public String SelectedDateCloudsUnits { get; private set; }
-        public String SelectedDatePressureText { get; private set; }
-        public String SelectedDatePressure { get; private set; }
-        public String SelectedDatePressureUnits { get; private set; }
-
-        public void LoadData(WeatherData weatherData, int index)
-        {
-            var remoteForecastWeatherData = weatherData.Forecast;
-
-            WeatherInformation.Model.ForecastWeatherParser.List forecast = remoteForecastWeatherData.list[index];
-            DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-            DateTime date = unixTime.AddSeconds(forecast.dt).ToLocalTime();
-            this.SelectedDate = date.ToString("m", CultureInfo.InvariantCulture);
-            NotifyPropertyChanged("SelectedDate");
-
-            bool isFahrenheit = true;
-            int temperatureUnitsSelection = _settings.TemperaruteUnitsSelectionSetting;
-            if (temperatureUnitsSelection != 0)
-            {
-                isFahrenheit = false;
-            }
-            double tempUnits = isFahrenheit ? 0 : 273.15;
-            string symbol = isFahrenheit ? AppResources.TemperatureUnitsFahrenheitSymbol : AppResources.TemperatureUnitsCentigradeSymbol;
-
-            string weatherImage;
-            if (forecast.weather.Count > 0 &&
-                forecast.weather[0].icon != null &&
-                RemoteImagesTranslation.GetTransaltedImage(forecast.weather[0].icon) != null)
-            {
-                weatherImage = RemoteImagesTranslation.GetTransaltedImage(forecast.weather[0].icon);
-            }
-            else
-            {
-                weatherImage = "weather_severe_alert";
-            }
-            this.SelectedDateWeatherImagePath = String.Format(CultureInfo.InvariantCulture, "/Images/{0}.png", weatherImage);
-            NotifyPropertyChanged("SelectedDateWeatherImagePath");
-
-            var selectedDateMaxTemp = "";
-            var selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.max;
-                conversion -= tempUnits;
-                selectedDateMaxTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateMaxTemp = selectedDateMaxTemp;
-            NotifyPropertyChanged("SelectedDateMaxTemp");
-            this.SelectedDateMaxTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateMaxTempUnits");
-
-            var selectedDateMinTemp = "";
-            selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.min;
-                conversion -= tempUnits;
-                selectedDateMinTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateMinTemp = selectedDateMinTemp;
-            NotifyPropertyChanged("SelectedDateMinTemp");
-            this.SelectedDateMaxTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateMinTempUnits");
-
-            // TODO: static resource :(
-            var selectedDateConditions = "no description available";
-            if (forecast.weather.Count > 0)
-            {
-                selectedDateConditions = forecast.weather[0].description;
-            }
-            this.SelectedDateConditions = selectedDateConditions;
-            NotifyPropertyChanged("SelectedDateConditions");
-
-            // TODO: nullables para distinguir cuando hay datos o no. Ahora me llega 0 si no datos (supongo) cuando double/integer
-            this.SelectedDateHumidityText = AppResources.MainPageCurrentHumidity;
-            this.SelectedDateHumidity = forecast.humidity.ToString(CultureInfo.InvariantCulture);
-            this.SelectedDateHumidityUnits = AppResources.MainPageCurrentHumidityUnits;
-            NotifyPropertyChanged("SelectedDateHumidity");
-            NotifyPropertyChanged("SelectedDateHumidityUnits");
-            NotifyPropertyChanged("SelectedDateHumidityText");
-
-            this.SelectedDateRainText = AppResources.MainPageCurrentRain;
-            this.SelectedDateRain = forecast.rain.ToString(CultureInfo.InvariantCulture);
-            this.SelectedDateRainUnits = AppResources.MainPageCurrentRainUnits;
-            NotifyPropertyChanged("SelectedDateRain");
-            NotifyPropertyChanged("SelectedDateRainUnits");
-            NotifyPropertyChanged("SelectedDateRainText");
-
-            this.SelectedDateWindText = AppResources.MainPageCurrentWind;
-            this.SelectedDateWind = forecast.speed.ToString(CultureInfo.InvariantCulture);
-            this.SelectedDateWindUnits = AppResources.MainPageCurrentWindUnits;
-            NotifyPropertyChanged("SelectedDateWind");
-            NotifyPropertyChanged("SelectedDateWindUnits");
-            NotifyPropertyChanged("SelectedDateWindText");
-
-            this.SelectedDateCloudsText = AppResources.MainPageCurrentClouds;
-            this.SelectedDateClouds = forecast.clouds.ToString(CultureInfo.InvariantCulture);
-            this.SelectedDateCloudsUnits = AppResources.MainPageCurrentCloudsUnits;
-            NotifyPropertyChanged("SelectedDateClouds");
-            NotifyPropertyChanged("SelectedDateCloudsUnits");
-            NotifyPropertyChanged("SelectedDateCloudsText");
-
-            this.SelectedDatePressureText = AppResources.MainPageCurrentPressure;
-            this.SelectedDatePressure = forecast.pressure.ToString(CultureInfo.InvariantCulture);
-            this.SelectedDatePressureUnits = AppResources.MainPageCurrentPressureUnits;
-            NotifyPropertyChanged("SelectedDatePressure");
-            NotifyPropertyChanged("SelectedDatePressureUnits");
-            NotifyPropertyChanged("SelectedDatePressureText");
-
-            var selectedDateMorningTemp = "";
-            selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.morn;
-                conversion -= tempUnits;
-                selectedDateMorningTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateMorningTempText = AppResources.SelectedDatePageMorning;
-            NotifyPropertyChanged("SelectedDateMorningTempText");
-            this.SelectedDateMorningTemp = selectedDateMorningTemp;
-            NotifyPropertyChanged("SelectedDateMorningTemp");
-            this.SelectedDateMorningTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateMorningTempUnits");
-
-            var selectedDateDayTemp = "";
-            selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.day;
-                conversion -= tempUnits;
-                selectedDateDayTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateDayTempText = AppResources.SelectedDatePageDay;
-            NotifyPropertyChanged("SelectedDateDayTempText");
-            this.SelectedDateDayTemp = selectedDateDayTemp;
-            NotifyPropertyChanged("SelectedDateDayTemp");
-            this.SelectedDateDayTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateDayTempUnits");
-
-            var selectedDateEveningTemp = "";
-            selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.eve;
-                conversion -= tempUnits;
-                selectedDateEveningTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateEveningTempText = AppResources.SelectedDatePageEvening;
-            NotifyPropertyChanged("SelectedDateEveningTempText");
-            this.SelectedDateEveningTemp = selectedDateEveningTemp;
-            NotifyPropertyChanged("SelectedDateEveningTemp");
-            this.SelectedDateEveningTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateEveningTempUnits");
-
-            var selectedDateNightTemp = "";
-            selectedDateTempUnits = "";
-            if (forecast.temp != null)
-            {
-                var conversion = forecast.temp.night;
-                conversion -= tempUnits;
-                selectedDateNightTemp = String.Format(CultureInfo.InvariantCulture, "{0:0.##}", conversion);
-                selectedDateTempUnits = symbol;
-            }
-            this.SelectedDateNightTempText = AppResources.SelectedDatePageNight;
-            NotifyPropertyChanged("SelectedDateNightTempText");
-            this.SelectedDateNightTemp = selectedDateNightTemp;
-            NotifyPropertyChanged("SelectedDateNightTemp");
-            this.SelectedDateNightTempUnits = selectedDateTempUnits;
-            NotifyPropertyChanged("SelectedDateNightTempUnits");
-
-            string country = weatherData.Country;
-            string city = weatherData.City;
-            string cityCountry = String.Format(CultureInfo.InvariantCulture, "{0}, {1}", city, country);
-            this.TitleTextCityCountry = cityCountry;
-            NotifyPropertyChanged("TitleTextCityCountry");
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-        private void NotifyPropertyChanged(String propertyName)
-        {
-            PropertyChangedEventHandler handler = PropertyChanged;
-            if (null != handler)
-            {
-                handler(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs b/WindowsPhone/WeatherInformation/WeatherInformation/ViewModels/SettingsViewModel.cs
deleted file mode 100644 (file)
index 3babef1..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.IO.IsolatedStorage;
-
-namespace WeatherInformation.ViewModels
-{
-    // TODO: IMHO INotifyPropertyChanged does not do anything useful in this class... NotifyPropertyChanged has no effect :(
-    public class SettingsViewModel : INotifyPropertyChanged
-    {
-        // Settings
-        private readonly IsolatedStorageSettings _settings;
-
-        // The key names of _settings
-        private const string _languageSelectionSettingKeyName = "LanguageSelection";
-        private const string _temperatureUnitsSelectionSettingKeyName = "TemperatureUnitsSelection";
-        private const string _forecastDayNumbersSelectionSelectionSettingKeyName = "ForecastDayNumbersSelection";
-
-        // The default value of ListPicker _settings
-        private const int _languageSelectionSettingDefault = 0;
-        private const int _temperatureUnitsSelectionSettingDefault = 0;
-        private const int _forecastDayNumbersSelectionSettingDefault = 0;
-
-
-        public SettingsViewModel()
-        {
-            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
-            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
-            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
-            if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
-            {
-                // Get the _settings for this application.
-                _settings = IsolatedStorageSettings.ApplicationSettings;
-            }
-        }
-
-        /// <summary>
-        /// Property to get and set language selection Setting Key.
-        /// </summary>
-        public int LanguageSelectionSetting
-        {
-            get
-            {
-                return GetValueOrDefault<int>(_languageSelectionSettingKeyName, _languageSelectionSettingDefault);
-            }
-            set
-            {
-                if (AddOrUpdateValue(_languageSelectionSettingKeyName, value))
-                {
-                    Save();
-                }
-                NotifyPropertyChanged(_languageSelectionSettingKeyName);
-            }
-        }
-
-        /// <summary>
-        /// Property to get and set temperature units selection Setting Key.
-        /// </summary>
-        public int TemperaruteUnitsSelectionSetting
-        {
-            get
-            {
-                return GetValueOrDefault<int>(_temperatureUnitsSelectionSettingKeyName, _temperatureUnitsSelectionSettingDefault);
-            }
-            set
-            {
-                if (AddOrUpdateValue(_temperatureUnitsSelectionSettingKeyName, value))
-                {
-                    Save();
-                }
-                NotifyPropertyChanged(_temperatureUnitsSelectionSettingKeyName);
-            }
-        }
-
-        /// <summary>
-        /// Property to get and set forecast day numbers selection Setting Key.
-        /// </summary>
-        public int ForecastDayNumbersSelectionSetting
-        {
-            get
-            {
-                return GetValueOrDefault<int>(_forecastDayNumbersSelectionSelectionSettingKeyName, _forecastDayNumbersSelectionSettingDefault);
-            }
-            set
-            {
-                if (AddOrUpdateValue(_forecastDayNumbersSelectionSelectionSettingKeyName, value))
-                {
-                    Save();
-                }
-                NotifyPropertyChanged(_forecastDayNumbersSelectionSelectionSettingKeyName);
-            }
-        }
-
-        /// <summary>
-        /// Get the current value of the setting, or if it is not found, set the 
-        /// setting to the default value.
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="Key"></param>
-        /// <param name="defaultValue"></param>
-        /// <returns></returns>
-        private T GetValueOrDefault<T>(string Key, T defaultValue)
-        {
-            T value;
-
-            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
-            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
-            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
-            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
-            {
-                return defaultValue;
-            }
-
-            // If the key exists, retrieve the value.
-            if (_settings.Contains(Key))
-            {
-                value = (T)_settings[Key];
-            }
-            // Otherwise, use the default value.
-            else
-            {
-                value = defaultValue;
-            }
-            return value;
-        }
-
-        /// <summary>
-        /// Update a setting value for application. If the setting does not
-        /// exist, then add the setting.
-        /// </summary>
-        /// <param name="Key"></param>
-        /// <param name="value"></param>
-        /// <returns></returns>
-        private bool AddOrUpdateValue(string Key, Object value)
-        {
-            bool valueChanged = false;
-
-            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
-            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
-            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
-            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
-            {
-                return false;
-            }
-
-            // If the key exists
-            if (_settings.Contains(Key))
-            {
-                // If the value has changed
-                if (_settings[Key] != value)
-                {
-                    // Store the new value
-                    _settings[Key] = value;
-                    valueChanged = true;
-                }
-            }
-            // Otherwise create the key.
-            else
-            {
-                _settings.Add(Key, value);
-                valueChanged = true;
-            }
-            return valueChanged;
-        }
-
-        /// <summary>
-        /// Save the _settings.
-        /// </summary>
-        private void Save()
-        {
-            // You need to add a check to DesignerProperties.IsInDesignTool to that code since accessing
-            // IsolatedStorageSettings in Visual Studio or Expression Blend is invalid.
-            // see: http://stackoverflow.com/questions/7294461/unable-to-determine-application-identity-of-the-caller
-            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
-            {
-                return;
-            }
-
-            _settings.Save();
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-        private void NotifyPropertyChanged(string propertyName)
-        {
-            PropertyChangedEventHandler handler = PropertyChanged;
-            if (null != handler)
-            {
-                handler(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/WeatherInformation.csproj b/WindowsPhone/WeatherInformation/WeatherInformation/WeatherInformation.csproj
deleted file mode 100644 (file)
index 820d1fe..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{71D9693C-AF50-4D7F-AC37-811BA1F1A0D7}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeatherInformation</RootNamespace>
-    <AssemblyName>WeatherInformation</AssemblyName>
-    <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
-    <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <SilverlightApplication>true</SilverlightApplication>
-    <SupportedCultures>es;qps-ploc</SupportedCultures>
-    <XapOutputs>true</XapOutputs>
-    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
-    <XapFilename>WeatherInformation_$(Configuration)_$(Platform).xap</XapFilename>
-    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
-    <SilverlightAppEntry>WeatherInformation.App</SilverlightAppEntry>
-    <ValidateXaml>true</ValidateXaml>
-    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-    <ExpressionBlendVersion>12.0.50429.0</ExpressionBlendVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\ARM\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\ARM\Release</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Label="MultilingualAppToolkit">
-    <MultilingualAppToolkitVersion>3.0</MultilingualAppToolkitVersion>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="LocalizedStrings.cs" />
-    <Compile Include="MainPage.xaml.cs">
-      <DependentUpon>MainPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="MapPage.xaml.cs">
-      <DependentUpon>MapPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Model\CurrentWeatherParser\Clouds.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Coord.cs" />
-    <Compile Include="Model\CurrentWeatherParser\CurrentWeather.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Main.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Snow.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Rain.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Sys.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Weather.cs" />
-    <Compile Include="Model\CurrentWeatherParser\Wind.cs" />
-    <Compile Include="Model\ForecastWeatherParser\City.cs" />
-    <Compile Include="Model\ForecastWeatherParser\Coord.cs" />
-    <Compile Include="Model\ForecastWeatherParser\ForecastWeather.cs" />
-    <Compile Include="Model\ForecastWeatherParser\List.cs" />
-    <Compile Include="Model\ForecastWeatherParser\Temp.cs" />
-    <Compile Include="Model\ForecastWeatherParser\Weather.cs" />
-    <Compile Include="Model\Images\RemoteImagesTranslation.cs" />
-    <Compile Include="Model\JsonDataParser\JsonParser.cs" />
-    <Compile Include="Model\Location.cs" />
-    <Compile Include="Model\LocationDataContext.cs" />
-    <Compile Include="Model\WeatherData.cs" />
-    <Compile Include="Model\Services\CustomHTTPClient.cs" />
-    <Compile Include="Model\Services\ServiceParser.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources\AppResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="SelectedDatePage.xaml.cs">
-      <DependentUpon>SelectedDatePage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="SettingsPage.xaml.cs">
-      <DependentUpon>SettingsPage.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="ViewModels\ItemViewModel.cs" />
-    <Compile Include="ViewModels\MainViewModel.cs" />
-    <Compile Include="ViewModels\SelectedDateViewModel.cs" />
-    <Compile Include="ViewModels\SettingsViewModel.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </ApplicationDefinition>
-    <DesignData Include="SampleData\SelectedDateViewModelSampleData.xaml">
-      <Generator>MSBuild:MarkupCompilePass1</Generator>
-    </DesignData>
-    <Page Include="MainPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <DesignData Include="SampleData\MainViewModelSampleData.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </DesignData>
-    <Page Include="MapPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="SelectedDatePage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="SettingsPage.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Properties\AppManifest.xml" />
-    <None Include="Properties\WMAppManifest.xml">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Assets\AlignmentGrid.png" />
-    <Content Include="Assets\ApplicationIcon.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileMedium.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\FlipCycleTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileMediumLarge.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Assets\Tiles\IconicTileSmall.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Images\add.png" />
-    <Content Include="Images\feature.settings.png" />
-    <Content Include="Images\weather_clear.png" />
-    <Content Include="Images\weather_clear_night.png" />
-    <Content Include="Images\weather_few_clouds.png" />
-    <Content Include="Images\weather_few_clouds_night.png" />
-    <Content Include="Images\weather_fog.png" />
-    <Content Include="Images\weather_overcast.png" />
-    <Content Include="Images\weather_severe_alert.png" />
-    <Content Include="Images\weather_showers.png" />
-    <Content Include="Images\weather_showers_scattered.png" />
-    <Content Include="Images\weather_snow.png" />
-    <Content Include="Images\weather_storm.png" />
-    <Content Include="README_FIRST.txt" />
-    <Content Include="Toolkit.Content\ApplicationBar.Add.png" />
-    <Content Include="Toolkit.Content\ApplicationBar.Cancel.png" />
-    <Content Include="Toolkit.Content\ApplicationBar.Check.png" />
-    <Content Include="Toolkit.Content\ApplicationBar.Delete.png" />
-    <Content Include="Toolkit.Content\ApplicationBar.Select.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\AppResources.es.resx">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.es.xlf</DependentUpon>
-      <culture>es</culture>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resources\AppResources.qps-ploc.resx">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>AppResources.qps-ploc.xlf</DependentUpon>
-      <culture>qps-ploc</culture>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resources\AppResources.resx">
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Phone.Controls, Version=8.0.0.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Phone.Controls.Toolkit">
-      <HintPath>..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json">
-      <HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Net.Http">
-      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Net.Http.Extensions">
-      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Net.Http.Primitives">
-      <HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\sl4-windowsphone71\System.Net.Http.Primitives.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <XliffResource Include="Resources\AppResources.es.xlf">
-      <Generator>XliffResxGenerator</Generator>
-      <LastGenOutput>AppResources.es.resx</LastGenOutput>
-    </XliffResource>
-    <XliffResource Include="Resources\AppResources.qps-ploc.xlf">
-      <Generator>XliffResxGenerator</Generator>
-      <LastGenOutput>AppResources.qps-ploc.resx</LastGenOutput>
-    </XliffResource>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.ResxResources.targets" Label="MultilingualAppToolkit" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions />
-  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
-  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
-    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
-    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
-  </Target>
-</Project>
\ No newline at end of file
diff --git a/WindowsPhone/WeatherInformation/WeatherInformation/packages.config b/WindowsPhone/WeatherInformation/WeatherInformation/packages.config
deleted file mode 100644 (file)
index deb89d6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Microsoft.Bcl" version="1.1.9" targetFramework="wp80" />
-  <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="wp80" />
-  <package id="Microsoft.Net.Http" version="2.2.22" targetFramework="wp80" />
-  <package id="Newtonsoft.Json" version="6.0.3" targetFramework="wp80" />
-  <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
-</packages>
\ No newline at end of file