This commit is contained in:
Javier Suárez Ruiz 2015-04-20 21:38:07 +02:00
Родитель d74b4fe928
Коммит 3a966536f6
420 изменённых файлов: 132870 добавлений и 0 удалений

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/.suo Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edb.chk Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edb.log Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edb0000B.log Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edb0000C.log Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edbres00001.jrs Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edbres00002.jrs Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/edbtmp.log Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/.vs/SplitView/v14/vbcs.cache/storage.ide Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,48 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.22609.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SplitView", "SplitView\SplitView.csproj", "{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|ARM.ActiveCfg = Debug|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|ARM.Build.0 = Debug|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|ARM.Deploy.0 = Debug|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x64.ActiveCfg = Debug|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x64.Build.0 = Debug|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x64.Deploy.0 = Debug|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x86.ActiveCfg = Debug|x86
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x86.Build.0 = Debug|x86
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Debug|x86.Deploy.0 = Debug|x86
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|Any CPU.Deploy.0 = Release|Any CPU
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|ARM.ActiveCfg = Release|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|ARM.Build.0 = Release|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|ARM.Deploy.0 = Release|ARM
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x64.ActiveCfg = Release|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x64.Build.0 = Release|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x64.Deploy.0 = Release|x64
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x86.ActiveCfg = Release|x86
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x86.Build.0 = Release|x86
{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -0,0 +1,26 @@
<Application
x:Class="SplitView.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView"
xmlns:locator="using:SplitView.ViewModels.Base">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/Colors.xaml" />
<ResourceDictionary Source="/Styles/Converters.xaml" />
<ResourceDictionary Source="/Styles/FlipViewStyles.xaml" />
<ResourceDictionary Source="/Styles/Fonts.xaml" />
<ResourceDictionary Source="/Styles/ListViewStyles.xaml" />
<ResourceDictionary Source="/Styles/RadioButtonStyles.xaml" />
<ResourceDictionary Source="/Styles/TextStyles.xaml" />
<ResourceDictionary Source="/Styles/ToggleButtonStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- ViewModelLocator -->
<locator:ViewModelLocator x:Key="Locator" />
</ResourceDictionary>
</Application.Resources>
</Application>

Просмотреть файл

@ -0,0 +1,104 @@
using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using Microsoft.ApplicationInsights;
using SplitView.Views;
namespace SplitView
{
/// <summary>
/// Provides application-specific behavior to supplement the default Application class.
/// </summary>
sealed partial class App : Application
{
/// <summary>
/// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.
/// </summary>
public TelemetryClient TelemetryClient = new TelemetryClient();
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
}
/// <summary>
/// Invoked when the application is launched normally by the end user. Other entry points
/// will be used such as when the application is launched to open a specific file.
/// </summary>
/// <param name="e">Details about the launch request and process.</param>
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached)
{
this.DebugSettings.EnableFrameRateCounter = true;
}
#endif
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
// Set the default language
rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainView), e.Arguments);
}
// Ensure the current window is active
Window.Current.Activate();
}
/// <summary>
/// Invoked when Navigation to a certain page fails
/// </summary>
/// <param name="sender">The Frame which failed navigation</param>
/// <param name="e">Details about the navigation failure</param>
void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
{
throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">The source of the suspend request.</param>
/// <param name="e">Details about the suspend request.</param>
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
deferral.Complete();
}
}
}

Просмотреть файл

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!--
Learn more about Application Insights configuration with ApplicationInsights.config here:
http://go.microsoft.com/fwlink/?LinkID=513840
-->
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows"/>
</TelemetryModules>
<ContextInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights"/>
</ContextInitializers>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights"/>
</TelemetryInitializers>
</ApplicationInsights>

Двоичные данные
SplitView Back Button/SplitView/Assets/Banner.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 78 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/1.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 320 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/2.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 406 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/3.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 350 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/4.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 499 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/5.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 272 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/6.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 340 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/7.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 437 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Gallery/8.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 281 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/Logo.scale-100.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 801 B

Двоичные данные
SplitView Back Button/SplitView/Assets/SmallLogo.scale-100.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 329 B

Двоичные данные
SplitView Back Button/SplitView/Assets/SplashScreen.scale-100.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.1 KiB

Двоичные данные
SplitView Back Button/SplitView/Assets/StoreLogo.scale-100.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 429 B

Двоичные данные
SplitView Back Button/SplitView/Assets/WideLogo.scale-100.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.1 KiB

Просмотреть файл

@ -0,0 +1,40 @@
namespace SplitView.Behaviors
{
using System.Windows.Input;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
public static class ItemClickCommandBehavior
{
public static readonly DependencyProperty CommandProperty =
DependencyProperty.RegisterAttached("Command", typeof(ICommand),
typeof(ItemClickCommandBehavior), new PropertyMetadata(null, OnCommandPropertyChanged));
public static void SetCommand(DependencyObject d, ICommand value)
{
d.SetValue(CommandProperty, value);
}
public static ICommand GetCommand(DependencyObject d)
{
return (ICommand)d.GetValue(CommandProperty);
}
private static void OnCommandPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
var control = d as ListViewBase;
if (control != null)
control.ItemClick += OnItemClick;
}
private static void OnItemClick(object sender, ItemClickEventArgs e)
{
var control = sender as ListViewBase;
var command = GetCommand(control);
if (command != null && command.CanExecute(e.ClickedItem))
command.Execute(e.ClickedItem);
}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
namespace SplitView.Converters
{
using System;
using Windows.UI;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
public class AlternatingIndexConverter : IValueConverter
{
private static int _index;
public object Convert(object value, Type targetType, object parameter, string language)
{
return (_index++ % 2 == 0 ? new SolidColorBrush(Colors.Transparent) : new SolidColorBrush(Colors.Gray));
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,18 @@
namespace SplitView.Converters
{
using System;
using Windows.UI.Xaml.Data;
class ToUpperConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value.ToString().ToUpperInvariant();
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,11 @@

namespace SplitView.Models
{
public class Constructor
{
public string ConstructorId { get; set; }
public string Url { get; set; }
public string Name { get; set; }
public string Nationality { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,14 @@

namespace SplitView.Models
{
public class Driver
{
public string DriverId { get; set; }
public string Url { get; set; }
public string CompleteName { get { return string.Format("{0} {1}", GivenName, FamilyName); } }
public string GivenName { get; set; }
public string FamilyName { get; set; }
public string DateOfBirth { get; set; }
public string Nationality { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,11 @@
namespace SplitView.Models
{
using System;
public class MenuItem
{
public string Icon { get; set; }
public string Title { get; set; }
public Type View { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,11 @@
namespace SplitView.Models
{
public class ConstructorStanding
{
public string Position { get; set; }
public string PositionText { get; set; }
public string Points { get; set; }
public string Wins { get; set; }
public Constructor Constructor { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,14 @@
using System.Collections.Generic;
namespace SplitView.Models
{
public class DriverStanding
{
public string Position { get; set; }
public string PositionText { get; set; }
public string Points { get; set; }
public string Wins { get; set; }
public Driver Driver { get; set; }
public List<Constructor> Constructors { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace SplitView.Models
{
public class StandingList
{
public string Season { get; set; }
public string Round { get; set; }
public List<DriverStanding> DriverStandings { get; set; }
public List<ConstructorStanding> ConstructorStandings { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,14 @@

namespace SplitView.Models
{
public class StandingMRData
{
public string Xmlns { get; set; }
public string Series { get; set; }
public string Url { get; set; }
public string Limit { get; set; }
public string Offset { get; set; }
public string Total { get; set; }
public StandingTable StandingsTable { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,8 @@

namespace SplitView.Models
{
public class StandingRootObject
{
public StandingMRData MRData { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,10 @@
using System.Collections.Generic;
namespace SplitView.Models
{
public class StandingTable
{
public string Season { get; set; }
public List<StandingList> StandingsLists { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity
Name="0292bb5c-575d-452b-9727-37959a650d0f"
Publisher="CN=Javier"
Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="0292bb5c-575d-452b-9727-37959a650d0f" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>SplitView</DisplayName>
<PublisherDisplayName>Javier</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetPlatform Name="Windows.Universal" MinVersion="10.0.10030.0" MaxVersionTested="10.0.10030.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="SplitView.App">
<uap:VisualElements
DisplayName="SplitView"
Square150x150Logo="Assets\Logo.png"
Square44x44Logo="Assets\SmallLogo.png"
Description="SplitView"
ForegroundText="light"
BackgroundColor="#464646">
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>

Просмотреть файл

@ -0,0 +1,29 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 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("SplitView")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SplitView")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 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: ComVisible(false)]

Просмотреть файл

@ -0,0 +1,36 @@
<!--
This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most
developers. However, you can modify these parameters to modify the behavior of the .NET Native
optimizer.
Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919
To fully enable reflection for App1.MyClass and all of its public/private members
<Type Name="App1.MyClass" Dynamic="Required All"/>
To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32
<TypeInstantiation Name="App1.AppClass" Arguments="System.Int32" Activate="Required Public" />
Using the Namespace directive to apply reflection policy to all the types in a particular namespace
<Namespace Name="DataClasses.ViewModels" Seralize="All" />
-->
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<!--
An Assembly element with Name="*Application*" applies to all assemblies in
the application package. The asterisks are not wildcards.
-->
<Assembly Name="*Application*" Dynamic="Required All" />
<!-- Add your application specific runtime directives here. -->
</Application>
<!-- Enable dynamic access to types that Application Insights requires -->
<Library Name="*Microsoft.ApplicationInsights*">
<Type Name="Windows.ApplicationModel.Core.CoreApplication" Dynamic="Required Public" />
</Library>
</Directives>

Просмотреть файл

@ -0,0 +1,8 @@
namespace SplitView.Services.Package
{
public interface IPackageService
{
string GetAppName();
string GetVersion();
}
}

Просмотреть файл

@ -0,0 +1,20 @@
namespace SplitView.Services.Package
{
public class PackageService : IPackageService
{
public string GetAppName()
{
var package = Windows.ApplicationModel.Package.Current;
return package.DisplayName;
}
public string GetVersion()
{
var package = Windows.ApplicationModel.Package.Current;
var version = package.Id.Version;
return string.Format("{0}.{1}.{2}.{3}",
version.Major, version.Minor, version.Build, version.Revision);
}
}
}

Просмотреть файл

@ -0,0 +1,12 @@
using SplitView.Models;
using System.Threading.Tasks;
namespace SplitView.Services.Standings
{
public interface IStandingService
{
Task<StandingTable> GetSeasonConstructorStandingsCollectionAsync(string season = "current");
Task<StandingTable> GetSeasonDriverStandingsCollectionAsync(string season = "current");
}
}

Просмотреть файл

@ -0,0 +1,31 @@
using SplitView.Models;
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace SplitView.Services.Standings
{
public class StandingService : IStandingService
{
public async Task<StandingTable> GetSeasonConstructorStandingsCollectionAsync(string season = "current")
{
var url = string.Format("http://ergast.com/api/f1/{0}/constructorStandings.json", season);
var client = new HttpClient();
var stringResult = await client.GetStringAsync(new Uri(url));
var data = JsonConvert.DeserializeObject<StandingRootObject>(stringResult);
return data.MRData.StandingsTable;
}
public async Task<StandingTable> GetSeasonDriverStandingsCollectionAsync(string season = "current")
{
var url = string.Format("http://ergast.com/api/f1/{0}/driverStandings.json", season);
var client = new HttpClient();
var stringResult = await client.GetStringAsync(new Uri(url));
var data = JsonConvert.DeserializeObject<StandingRootObject>(stringResult);
return data.MRData.StandingsTable;
}
}
}

Просмотреть файл

@ -0,0 +1,285 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.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>{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}</ProjectGuid>
<OutputType>AppContainerExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SplitView</RootNamespace>
<AssemblyName>SplitView</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.10030.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<PackageCertificateKeyFile>SplitView_TemporaryKey.pfx</PackageCertificateKeyFile>
<NuGetPackageImportStamp>d6242cba</NuGetPackageImportStamp>
</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_UAP</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_UAP</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_UAP</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_UAP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</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_UAP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Behaviors\ItemClickCommandBehavior.cs" />
<Compile Include="Converters\AlternatingIndexConverter.cs" />
<Compile Include="Converters\ToUpperConverter.cs" />
<Compile Include="Models\Constructor\Constructor.cs" />
<Compile Include="Models\Driver\Driver.cs" />
<Compile Include="Models\MenuItem.cs" />
<Compile Include="Models\Standings\ConstructorStanding.cs" />
<Compile Include="Models\Standings\DriverStanding.cs" />
<Compile Include="Models\Standings\StandingList.cs" />
<Compile Include="Models\Standings\StandingMRData.cs" />
<Compile Include="Models\Standings\StandingRootObject.cs" />
<Compile Include="Models\Standings\StandingTable.cs" />
<Compile Include="Services\Package\IPackageService.cs" />
<Compile Include="Services\Package\PackageService.cs" />
<Compile Include="Services\Standings\IStandingService.cs" />
<Compile Include="Services\Standings\StandingService.cs" />
<Compile Include="ViewModels\AboutViewModel.cs" />
<Compile Include="ViewModels\Base\DelegateCommand.cs" />
<Compile Include="ViewModels\Base\DelegateCommandAsync.cs" />
<Compile Include="ViewModels\Base\ViewModelBase.cs" />
<Compile Include="ViewModels\Base\ViewModelLocator.cs" />
<Compile Include="ViewModels\HomeViewModel.cs" />
<Compile Include="ViewModels\MainViewModel.cs" />
<Compile Include="ViewModels\StandingsViewModel.cs" />
<Compile Include="Views\StandingsView.xaml.cs">
<DependentUpon>StandingsView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\HomeView.xaml.cs">
<DependentUpon>HomeView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\AboutView.xaml.cs">
<DependentUpon>AboutView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\MainView.xaml.cs">
<DependentUpon>MainView.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Views\Base\PageBase.cs" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
<None Include="ApplicationInsights.config" />
<None Include="packages.config" />
<None Include="SplitView_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\Banner.jpg" />
<Content Include="Assets\Gallery\1.jpg" />
<Content Include="Assets\Gallery\2.jpg" />
<Content Include="Assets\Gallery\3.jpg" />
<Content Include="Assets\Gallery\4.jpg" />
<Content Include="Assets\Gallery\5.jpg" />
<Content Include="Assets\Gallery\6.jpg" />
<Content Include="Assets\Gallery\7.jpg" />
<Content Include="Assets\Gallery\8.jpg" />
<Content Include="Properties\Default.rd.xml" />
<Content Include="Assets\Logo.scale-100.png" />
<Content Include="Assets\SmallLogo.scale-100.png" />
<Content Include="Assets\SplashScreen.scale-100.png" />
<Content Include="Assets\StoreLogo.scale-100.png" />
<Content Include="Assets\WideLogo.scale-100.png" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="Styles\Colors.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\Converters.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\FlipViewStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\Fonts.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\ListViewStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\RadioButtonStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\TextStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\ToggleButtonStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Views\StandingsView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\HomeView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\AboutView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\MainView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.ApplicationInsights">
<HintPath>..\packages\Microsoft.ApplicationInsights.0.13.0-build26067\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.winmd</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry">
<HintPath>..\packages\Microsoft.ApplicationInsights.RuntimeTelemetry.0.13.0-build26067\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.winmd</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationInsights.Extensibility.Windows">
<HintPath>..\packages\Microsoft.ApplicationInsights.WindowsStore.0.13.0-build26067\lib\win81\Microsoft.ApplicationInsights.Extensibility.Windows.winmd</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity">
<HintPath>..\packages\Unity.3.5.1405-prerelease\lib\win8\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.RegistrationByConvention">
<HintPath>..\packages\Unity.3.5.1405-prerelease\lib\win8\Microsoft.Practices.Unity.RegistrationByConvention.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.7.0.1-beta1\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup />
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<Import Project="..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets" Condition="Exists('..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.ApplicationInsights.0.13.0-build26067\build\portable-win81+wpa81\Microsoft.ApplicationInsights.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.ApplicationInsights.0.13.0-build26067\build\portable-win81+wpa81\Microsoft.ApplicationInsights.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.ApplicationInsights.0.13.0-build26067\build\portable-win81+wpa81\Microsoft.ApplicationInsights.targets" Condition="Exists('..\packages\Microsoft.ApplicationInsights.0.13.0-build26067\build\portable-win81+wpa81\Microsoft.ApplicationInsights.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>

Просмотреть файл

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<DeviceId>30F105C9-681E-420b-A277-7C086EAD8A4E</DeviceId>
<UseEmulator>false</UseEmulator>
</PropertyGroup>
</Project>

Двоичные данные
SplitView Back Button/SplitView/SplitView_TemporaryKey.pfx Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,21 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<Color x:Key="WhiteColor">#FFF</Color>
<SolidColorBrush x:Key="WhiteBrush" Color="{StaticResource WhiteColor}"/>
<Color x:Key="BlackColor">#000</Color>
<SolidColorBrush x:Key="BlackBrush" Color="{StaticResource BlackColor}"/>
<Color x:Key="BackGroundColor">#FAFFF8</Color>
<SolidColorBrush x:Key="BackgroundBrush" Color="{StaticResource BackGroundColor}"/>
<Color x:Key="BackGroundPaneColor">#363537</Color>
<SolidColorBrush x:Key="BackgroundPaneBrush" Color="{StaticResource BackGroundPaneColor}"/>
<Color x:Key="AccentColor">Blue</Color>
<SolidColorBrush x:Key="AccentBrush" Color="{StaticResource AccentColor}"/>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,10 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="using:SplitView.Converters">
<!-- Converters -->
<converters:AlternatingIndexConverter x:Key="AlternatingIndexConverter" />
<converters:ToUpperConverter x:Key="ToUpperConverter" />
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,15 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<DataTemplate x:Key="GalleryDataTemplate">
<Grid
Height="300">
<Image
Stretch="UniformToFill"
Source="{Binding}" />
</Grid>
</DataTemplate>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,12 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- Font Sizes -->
<x:Double x:Key="FontSizeSmall">20</x:Double>
<x:Double x:Key="FontSizeMedium">24</x:Double>
<x:Double x:Key="FontSizeLarge">30</x:Double>
<x:Double x:Key="FontSizeMoreLarge">36</x:Double>
<x:Double x:Key="FontSizeExtraLarge">40</x:Double>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,75 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<DataTemplate x:Key="MenuItemDataTemplate">
<Grid
Width="250">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border
Grid.Column="0"
Background="Transparent"
Width="40"
Height="40">
<FontIcon
FontFamily="Segoe MDL2 Assets"
Foreground="White"
Glyph="{Binding Icon}" />
</Border>
<TextBlock
Grid.Column="1"
Text="{Binding Title, Converter={StaticResource ToUpperConverter}}"
Foreground="White"
VerticalAlignment="Center"
Margin="10, 0" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="DriverDataTemplate">
<Grid
Background="{Binding Converter={StaticResource AlternatingIndexConverter}}"
Width="1920"
Margin="0, 1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid>
<Ellipse Height="50"
Width="50"
Fill="{StaticResource AccentBrush}" />
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock
Text="{Binding Position}"
FontSize="28"
Foreground="White" />
<TextBlock
Text="º"
FontSize="24"
Foreground="White" />
</StackPanel>
</Grid>
<StackPanel Grid.Column="1" Margin="15, 0">
<TextBlock Text="{Binding Driver.CompleteName}" FontSize="24" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Points}"
Foreground="{StaticResource AccentBrush}" />
<TextBlock Text=" Points" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Wins}"
Foreground="{StaticResource AccentBrush}" />
<TextBlock Text=" Wins" />
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,164 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<Color x:Key="SystemListAccentLowColor">#FF004780</Color>
<Color x:Key="SystemListAccentMediumColor">#FF005FAB</Color>
<Color x:Key="SystemListAccentHighColor">#FF006BC0</Color>
<SolidColorBrush x:Key="SplitViewBackgroundBrush" Color="{ThemeResource BaseMediumHighColor}" />
<SolidColorBrush x:Key="SplitViewForegroundBrush" Color="{ThemeResource BaseHighColor}" />
<SolidColorBrush x:Key="NavButtonPressedBackgroundBrush" Color="{ThemeResource SystemListMediumColor}" />
<SolidColorBrush x:Key="NavButtonHoverBackgroundBrush" Color="{ThemeResource SystemListLowColor}" />
<SolidColorBrush x:Key="NavButtonCheckedBackgroundBrush" Color="{ThemeResource SystemListAccentLowColor}" />
<SolidColorBrush x:Key="NavButtonCheckedPressedBackgroundBrush" Color="{ThemeResource SystemListAccentMediumColor}" />
<SolidColorBrush x:Key="NavButtonCheckedHoverBackgroundBrush" Color="{ThemeResource SystemListAccentHighColor}" />
<Style TargetType="RadioButton" BasedOn="{StaticResource SplitViewRadioButtonStyle}" />
<Style TargetType="RadioButton" x:Key="SplitViewRadioButtonStyle">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Padding" Value="1,4,0,0" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="HoverBackground">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedHoverBackground">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="PressedBackground">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedPressedBackground">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NixonGlyph" Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource RadioButtonContentDisabledForegroundThemeBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource RadioButtonContentDisabledForegroundThemeBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="CheckStates">
<VisualState x:Name="Checked">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="CheckedBackground">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Unchecked" />
<VisualState x:Name="Indeterminate" />
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard>
<DoubleAnimation Duration="0" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity" To="1" />
<DoubleAnimation Duration="0" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity" To="1" />
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused" />
<VisualState x:Name="PointerFocused" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="48" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="48" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Grid.Resources>
<Style TargetType="Rectangle" x:Name="FocusVisual">
<Setter Property="Opacity" Value="0" />
<Setter Property="StrokeDashArray" Value="1,1" />
<Setter Property="StrokeEndLineCap" Value="Square" />
</Style>
</Grid.Resources>
<!-- background -->
<Grid x:Name="NotCheckedBackground" Grid.ColumnSpan="4">
<Rectangle x:Name="PressedBackground" Visibility="Collapsed" Fill="{StaticResource NavButtonPressedBackgroundBrush}"/>
<Rectangle x:Name="HoverBackground" Visibility="Collapsed" Fill="{StaticResource NavButtonHoverBackgroundBrush}"/>
</Grid>
<Grid x:Name="CheckedBackground" Grid.ColumnSpan="4" Visibility="Collapsed" Background="{StaticResource NavButtonCheckedBackgroundBrush}">
<Rectangle x:Name="CheckedPressedBackground" Visibility="Collapsed" Fill="{StaticResource NavButtonCheckedPressedBackgroundBrush}"/>
<Rectangle x:Name="CheckedHoverBackground" Visibility="Collapsed" Fill="{StaticResource NavButtonCheckedHoverBackgroundBrush}"/>
</Grid>
<!-- focus -->
<Rectangle x:Name="FocusVisualWhite" Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}" StrokeDashOffset="1.5" Style="{StaticResource FocusVisual}" />
<Rectangle x:Name="FocusVisualBlack" Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}" StrokeDashOffset="0.5" Style="{StaticResource FocusVisual}" />
<!-- glyph -->
<ContentPresenter x:Name="NixonGlyph" Content="{TemplateBinding Tag}" />
<!-- text -->
<ContentPresenter x:Name="ContentPresenter"
Grid.Column="1"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
AutomationProperties.AccessibilityView="Raw"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,12 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<Style x:Key="HeaderStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="FontSize" Value="28" />
</Style>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,108 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView.Styles">
<Style x:Key="SymbolButton" TargetType="ToggleButton">
<Setter Property="Background" Value="{ThemeResource ToggleButtonBackgroundThemeBrush}"/>
<Setter Property="Foreground" Value="{ThemeResource ToggleButtonForegroundThemeBrush}"/>
<Setter Property="BorderBrush" Value="{ThemeResource ToggleButtonBorderThemeBrush}"/>
<Setter Property="BorderThickness" Value="{ThemeResource ToggleButtonBorderThemeThickness}"/>
<Setter Property="Padding" Value="12,4,12,5"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<Storyboard>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="Green"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonDisabledForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Checked">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="Green"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CheckedPointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="Green"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CheckedPressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="Green"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CheckedDisabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonCheckedDisabledForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Indeterminate"/>
<VisualState x:Name="IndeterminatePointerOver">
</VisualState>
<VisualState x:Name="IndeterminatePressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonPressedForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="IndeterminateDisabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonDisabledForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualWhite"/>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualBlack"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
<VisualState x:Name="PointerFocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
<Rectangle x:Name="FocusVisualWhite" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="1.5" StrokeEndLineCap="Square" Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}" StrokeDashArray="1,1"/>
<Rectangle x:Name="FocusVisualBlack" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="0.5" StrokeEndLineCap="Square" Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}" StrokeDashArray="1,1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

Просмотреть файл

@ -0,0 +1,55 @@
namespace SplitView.ViewModels
{
using System.Threading.Tasks;
using Base;
using Windows.UI.Xaml.Navigation;
using Services.Package;
public class AboutViewModel : ViewModelBase
{
// Variables
private string _name;
private string _version;
// Services
private IPackageService _packageService;
public AboutViewModel(IPackageService packageService)
{
_packageService = packageService;
}
public string Name
{
get { return _name; }
set
{
_name = value;
RaisePropertyChanged();
}
}
public string Version
{
get { return _version; }
set
{
_version = value;
RaisePropertyChanged();
}
}
public override Task OnNavigatedFrom(NavigationEventArgs args)
{
return null;
}
public override Task OnNavigatedTo(NavigationEventArgs args)
{
Name = _packageService.GetAppName();
Version = _packageService.GetVersion();
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,131 @@
using System;
using System.Windows.Input;
namespace SplitView.ViewModels.Base
{
/// <summary>
/// This class allows us to delegate command execution to viewmodels.
/// </summary>
public class DelegateCommand : ICommand
{
private readonly Action _execute;
private readonly Func<bool> _canExecute;
/// <summary>
/// Constructor not using canExecute.
/// </summary>
/// <param name="execute"></param>
public DelegateCommand(Action execute) : this(execute, null) { }
/// <summary>
/// Constructor using both execute and canExecute.
/// </summary>
/// <param name="execute"></param>
/// <param name="canExecute"></param>
public DelegateCommand(Action execute, Func<bool> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// This method is called from XAML to evaluate if the command can be executed.
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
if (_canExecute != null)
return _canExecute();
return true;
}
/// <summary>
/// This method is called from XAML to execute the command.
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
_execute();
}
/// <summary>
/// This method allow us to force the execution of CanExecute method to reevaluate execution.
/// </summary>
public void RaiseCanExecuteChanged()
{
var tmpHandle = CanExecuteChanged;
if (tmpHandle != null)
tmpHandle(this, new EventArgs());
}
/// <summary>
/// This event notify XAML controls using the command to reevaluate the CanExecute of it.
/// </summary>
public event EventHandler CanExecuteChanged;
}
/// <summary>
/// This class allows us to delegate command execution to viewmodels using a T type as parameter.
/// </summary>
public class DelegateCommand<T> : ICommand
{
private readonly Action<T> _execute;
private readonly Func<T, bool> _canExecute;
/// <summary>
/// Constructor not using canExecute.
/// </summary>
/// <param name="execute"></param>
public DelegateCommand(Action<T> execute) : this(execute, null) { }
/// <summary>
/// Constructor using both execute and canExecute.
/// </summary>
/// <param name="execute"></param>
/// <param name="canExecute"></param>
public DelegateCommand(Action<T> execute, Func<T, bool> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// This method is called from XAML to evaluate if the command can be executed.
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
if (_canExecute != null)
return _canExecute((T)parameter);
return true;
}
/// <summary>
/// This method is called from XAML to execute the command.
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
_execute((T)parameter);
}
/// <summary>
/// This method allow us to force the execution of CanExecute method to reevaluate execution.
/// </summary>
public void RaiseCanExecuteChanged()
{
var tmpHandle = CanExecuteChanged;
if (tmpHandle != null)
tmpHandle(this, new EventArgs());
}
/// <summary>
/// This event notify XAML controls using the command to reevaluate the CanExecute of it.
/// </summary>
public event EventHandler CanExecuteChanged;
}
}

Просмотреть файл

@ -0,0 +1,137 @@
using System;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SplitView.ViewModels.Base
{
/// <summary>
/// This class allows us to delegate command execution to viewmodels.
/// This version of the command allow to use async/await.
/// </summary>
public class DelegateCommandAsync : ICommand
{
private readonly Func<Task<bool>> _canExecute;
private readonly Func<Task> _execute;
/// <summary>
/// Constructor not using canExecute.
/// </summary>
/// <param name="execute"></param>
public DelegateCommandAsync(Func<Task> execute) : this(execute, null)
{
}
/// <summary>
/// Constructor using both execute and canExecute.
/// </summary>
/// <param name="execute"></param>
/// <param name="canExecute"></param>
public DelegateCommandAsync(Func<Task> execute, Func<Task<bool>> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// This method is called from XAML to evaluate if the command can be executed.
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
if (_canExecute != null)
return _canExecute().Result;
return true;
}
/// <summary>
/// This method is called from XAML to execute the command.
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
_execute();
}
/// <summary>
/// This event notify XAML controls using the command to reevaluate the CanExecute of it.
/// </summary>
public event EventHandler CanExecuteChanged;
/// <summary>
/// This method allow us to force the execution of CanExecute method to reevaluate execution.
/// </summary>
public void RaiseCanExecuteChanged()
{
EventHandler tmpHandle = CanExecuteChanged;
if (tmpHandle != null)
tmpHandle(this, new EventArgs());
}
}
/// <summary>
/// This class allows us to delegate command execution to viewmodels using a T type as parameter.
/// </summary>
public class DelegateCommandAsync<T> : ICommand
{
private readonly Func<T, Task<bool>> _canExecute;
private readonly Func<T, Task> _execute;
/// <summary>
/// Constructor not using canExecute.
/// </summary>
/// <param name="execute"></param>
public DelegateCommandAsync(Func<T, Task> execute) : this(execute, null)
{
}
/// <summary>
/// Constructor using both execute and canExecute.
/// </summary>
/// <param name="execute"></param>
/// <param name="canExecute"></param>
public DelegateCommandAsync(Func<T, Task> execute, Func<T, Task<bool>> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// This method is called from XAML to evaluate if the command can be executed.
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
if (_canExecute != null)
return _canExecute((T) parameter).Result;
return true;
}
/// <summary>
/// This method is called from XAML to execute the command.
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
_execute((T) parameter);
}
/// <summary>
/// This event notify XAML controls using the command to reevaluate the CanExecute of it.
/// </summary>
public event EventHandler CanExecuteChanged;
/// <summary>
/// This method allow us to force the execution of CanExecute method to reevaluate execution.
/// </summary>
public void RaiseCanExecuteChanged()
{
EventHandler tmpHandle = CanExecuteChanged;
if (tmpHandle != null)
tmpHandle(this, new EventArgs());
}
}
}

Просмотреть файл

@ -0,0 +1,61 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace SplitView.ViewModels.Base
{
public abstract class ViewModelBase : INotifyPropertyChanged
{
private Frame appFrame;
private Frame splitViewFrame;
private bool isBusy;
public ViewModelBase()
{
}
public Frame AppFrame
{
get { return appFrame; }
}
public Frame SplitViewFrame
{
get { return splitViewFrame; }
}
public bool IsBusy
{
get { return isBusy; }
set
{
isBusy = value;
RaisePropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
public abstract Task OnNavigatedFrom(NavigationEventArgs args);
public abstract Task OnNavigatedTo(NavigationEventArgs args);
public void RaisePropertyChanged([CallerMemberName]string propertyName = "")
{
var Handler = PropertyChanged;
if (Handler != null)
Handler(this, new PropertyChangedEventArgs(propertyName));
}
internal void SetAppFrame(Frame viewFrame)
{
appFrame = viewFrame;
}
internal void SetSplitFrame(Frame viewFrame)
{
splitViewFrame = viewFrame;
}
}
}

Просмотреть файл

@ -0,0 +1,46 @@
namespace SplitView.ViewModels.Base
{
using Services.Standings;
using Microsoft.Practices.Unity;
using Services.Package;
public class ViewModelLocator
{
readonly IUnityContainer _container;
public ViewModelLocator()
{
_container = new UnityContainer();
// ViewModels
_container.RegisterType<MainViewModel>();
_container.RegisterType<HomeViewModel>();
_container.RegisterType<StandingsViewModel>();
_container.RegisterType<AboutViewModel>();
// Services
_container.RegisterType<IStandingService, StandingService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IPackageService, PackageService>(new ContainerControlledLifetimeManager());
}
public MainViewModel MainViewModel
{
get { return _container.Resolve<MainViewModel>(); }
}
public HomeViewModel HomeViewModel
{
get { return _container.Resolve<HomeViewModel>(); }
}
public StandingsViewModel StandingsViewModel
{
get { return _container.Resolve<StandingsViewModel>(); }
}
public AboutViewModel AboutViewModel
{
get { return _container.Resolve<AboutViewModel>(); }
}
}
}

Просмотреть файл

@ -0,0 +1,101 @@
namespace SplitView.ViewModels
{
using System.Threading.Tasks;
using Base;
using Windows.UI.Xaml.Navigation;
using System.Collections.ObjectModel;
using Models;
using Windows.UI.Xaml;
using System;
public class HomeViewModel : ViewModelBase
{
// Variables
private DispatcherTimer _timer;
private ObservableCollection<string> _gallery;
private int _selectedImage;
private ObservableCollection<DriverStanding> _driverStanding;
public ObservableCollection<string> Gallery
{
get { return _gallery; }
set
{
_gallery = value;
RaisePropertyChanged();
}
}
public int SelectedImage
{
get { return _selectedImage; }
set
{
_selectedImage = value;
RaisePropertyChanged();
}
}
public ObservableCollection<DriverStanding> DriverStanding
{
get { return _driverStanding; }
set
{
_driverStanding = value;
RaisePropertyChanged();
}
}
public override Task OnNavigatedFrom(NavigationEventArgs args)
{
if (_timer != null)
_timer.Tick -= ChangeImage;
return null;
}
public override Task OnNavigatedTo(NavigationEventArgs args)
{
if (args.Parameter != null)
{
DriverStanding = args.Parameter as ObservableCollection<DriverStanding>;
}
LoadGallery();
// Configure the timer
_timer = new DispatcherTimer
{
//Set the interval between ticks (in this case 5 seconds to see it working)
Interval = TimeSpan.FromSeconds(5)
};
// Change what's displayed when the timer ticks
_timer.Tick += ChangeImage;
// Start the timer
_timer.Start();
return null;
}
private void LoadGallery()
{
Gallery = new ObservableCollection<string>();
for (int i = 0; i < 8; i++)
{
Gallery.Add(string.Format("ms-appx:///Assets/Gallery/{0}.jpg", i + 1));
}
}
private void ChangeImage(object sender, object o)
{
// Get the number of items in the flip view
var totalItems = Gallery.Count;
// Figure out the new item's index (the current index plus one, if the next item would be out of range, go back to zero)
var newItemIndex = (SelectedImage + 1) % totalItems;
// Set the displayed item's index on the flip view
SelectedImage = newItemIndex;
}
}
}

Просмотреть файл

@ -0,0 +1,178 @@
namespace SplitView.ViewModels
{
using System.Threading.Tasks;
using Base;
using Windows.UI.Xaml.Navigation;
using System.Windows.Input;
using System.Collections.ObjectModel;
using Models;
using Views;
using Services.Standings;
using System.Linq;
using System;
public class MainViewModel : ViewModelBase
{
// Variables
private bool _isPaneOpen;
private ObservableCollection<MenuItem> _menuItems;
private MenuItem _selectedMenuItem;
private ObservableCollection<DriverStanding> _driverStanding;
//Services
private IStandingService _standingService;
// Commands
private ICommand _hamburgerCommand;
private ICommand _navigateCommand;
private DelegateCommand _backCommand;
public MainViewModel(IStandingService standingService)
{
_standingService = standingService;
}
public bool IsPaneOpen
{
get
{
return _isPaneOpen;
}
set
{
_isPaneOpen = value;
RaisePropertyChanged();
}
}
public ObservableCollection<MenuItem> MenuItems
{
get { return _menuItems; }
set
{
_menuItems = value;
RaisePropertyChanged();
}
}
public MenuItem SelectedMenuItem
{
get { return _selectedMenuItem; }
set
{
_selectedMenuItem = value;
RaisePropertyChanged();
}
}
public ICommand HamburgerCommand
{
get { return _hamburgerCommand = _hamburgerCommand ?? new DelegateCommand(HamburgerCommandExecute); }
}
public ICommand NavigateCommand
{
get { return _navigateCommand = _navigateCommand ?? new DelegateCommand<MenuItem>(NavigateCommandExecute); }
}
public DelegateCommand BackCommand
{
get { return _backCommand = _backCommand ?? new DelegateCommand(BackCommandExecute, BackCommandCanExecute); }
}
public override Task OnNavigatedFrom(NavigationEventArgs args)
{
return null;
}
public override async Task OnNavigatedTo(NavigationEventArgs args)
{
IsPaneOpen = true;
await LoadDriverStanding();
LoadMenu();
}
private void LoadMenu()
{
MenuItems = new ObservableCollection<MenuItem>
{
new MenuItem
{
Icon = "",
Title = "Home",
View = typeof(HomeView)
},
new MenuItem
{
Icon = "",
Title = "Standings",
View = typeof(StandingsView)
},
new MenuItem
{
Icon = "",
Title = "About",
View = typeof(AboutView)
}
};
SelectedMenuItem = MenuItems.FirstOrDefault();
Navigate(SelectedMenuItem.View);
}
private async Task LoadDriverStanding()
{
var driverStandings = await _standingService.GetSeasonDriverStandingsCollectionAsync();
var drivers = driverStandings.StandingsLists.First().DriverStandings;
_driverStanding = new ObservableCollection<DriverStanding>();
foreach (var driver in drivers)
{
_driverStanding.Add(driver);
}
}
private void Navigate(Type view)
{
var type = view.Name;
switch (type)
{
case "HomeView":
SplitViewFrame.Navigate(view, _driverStanding);
break;
case "StandingsView":
SplitViewFrame.Navigate(view, _driverStanding);
break;
case "AboutView":
SplitViewFrame.Navigate(view);
break;
}
BackCommand.RaiseCanExecuteChanged();
}
private void HamburgerCommandExecute()
{
IsPaneOpen = (IsPaneOpen == true) ? false : true;
}
private void NavigateCommandExecute(MenuItem menuItem)
{
Navigate(menuItem.View);
}
private void BackCommandExecute()
{
SplitViewFrame.GoBack();
var selectedMenuItem = SplitViewFrame.CurrentSourcePageType;
SelectedMenuItem = MenuItems.FirstOrDefault(mi => mi.View.Equals(selectedMenuItem));
}
private bool BackCommandCanExecute()
{
return SplitViewFrame.CanGoBack;
}
}
}

Просмотреть файл

@ -0,0 +1,38 @@
namespace SplitView.ViewModels
{
using System.Threading.Tasks;
using Base;
using Windows.UI.Xaml.Navigation;
using System.Collections.ObjectModel;
using Models;
public class StandingsViewModel : ViewModelBase
{
private ObservableCollection<DriverStanding> _driverStanding;
public ObservableCollection<DriverStanding> DriverStanding
{
get { return _driverStanding; }
set
{
_driverStanding = value;
RaisePropertyChanged();
}
}
public override Task OnNavigatedFrom(NavigationEventArgs args)
{
return null;
}
public override Task OnNavigatedTo(NavigationEventArgs args)
{
if (args.Parameter != null)
{
DriverStanding = args.Parameter as ObservableCollection<DriverStanding>;
}
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,53 @@
<base:PageBase
x:Class="SplitView.Views.AboutView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView"
xmlns:base="using:SplitView.Views.Base"
xmlns:behaviors="using:SplitView.Behaviors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding AboutViewModel, Source={StaticResource Locator}}">
<Grid>
<Grid
Margin="25, 50">
<Grid.Transitions>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Grid.Transitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock
Grid.Column="0"
Grid.Row="0"
Text="Name: "
FontWeight="SemiBold"
Foreground="{StaticResource AccentBrush}" />
<TextBlock
Grid.Column="1"
Grid.Row="0"
Text="{Binding Name}"
Margin="10, 0" />
<TextBlock
Grid.Column="0"
Grid.Row="1"
Text="Version: "
FontWeight="SemiBold"
Foreground="{StaticResource AccentBrush}" />
<TextBlock
Grid.Column="1"
Grid.Row="1"
Text="{Binding Version}"
Margin="10, 0" />
</Grid>
</Grid>
</base:PageBase>

Просмотреть файл

@ -0,0 +1,12 @@
namespace SplitView.Views
{
using Base;
public sealed partial class AboutView : PageBase
{
public AboutView()
{
this.InitializeComponent();
}
}
}

Просмотреть файл

@ -0,0 +1,41 @@
namespace SplitView.Views.Base
{
using ViewModels.Base;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
public class PageBase : Page
{
private ViewModelBase _vm;
private Frame _splitViewFrame;
public Frame SplitViewFrame
{
get { return _splitViewFrame; }
set
{
_splitViewFrame = value;
if(_vm == null)
_vm = (ViewModelBase)this.DataContext;
_vm.SetSplitFrame(_splitViewFrame);
}
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
_vm = (ViewModelBase)this.DataContext;
_vm.SetAppFrame(this.Frame);
_vm.OnNavigatedTo(e);
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
_vm.OnNavigatedFrom(e);
}
}
}

Просмотреть файл

@ -0,0 +1,126 @@
<base:PageBase
x:Class="SplitView.Views.HomeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView"
xmlns:base="using:SplitView.Views.Base"
xmlns:behaviors="using:SplitView.Behaviors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding HomeViewModel, Source={StaticResource Locator}}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="wideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="641" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Splitter.DisplayMode" Value="CompactInline"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="narrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Splitter.DisplayMode" Value="Overlay"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid>
<Grid.Transitions>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Grid.Transitions>
<ScrollViewer>
<RelativePanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- Welcome -->
<Grid
Grid.Row="0"
MaxHeight="400"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
RelativePanel.AlignTopWithPanel="True"
RelativePanel.AlignLeftWithPanel="True"
Margin="10">
<Image
Stretch="UniformToFill"
Source="ms-appx:///Assets/Banner.jpg" />
<Border
Background="{StaticResource BackgroundPaneBrush}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Margin="0, 10">
<StackPanel
Margin="10, 0">
<TextBlock
Text="Welcome to"
FontWeight="SemiLight"
Foreground="{StaticResource WhiteBrush}"
FontSize="{StaticResource FontSizeSmall}" />
<TextBlock
Text="FORMULA ONE 2015"
Foreground="{StaticResource WhiteBrush}"
FontWeight="SemiBold"
FontSize="{StaticResource FontSizeMoreLarge}" />
</StackPanel>
</Border>
</Grid>
<!-- Standings -->
<Grid
Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel
Grid.Column="0"
Height="300"
Margin="10, 0">
<TextBlock
Text="ALBUM"
Style="{StaticResource HeaderStyle}" />
<Grid
Background="LightGray">
<FlipView
ItemsSource="{Binding Gallery}"
ItemTemplate="{StaticResource GalleryDataTemplate}"
SelectedIndex="{Binding SelectedImage, Mode=TwoWay}"
Height="300">
<FlipView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</FlipView.ItemsPanel>
</FlipView>
</Grid>
</StackPanel>
<StackPanel
Grid.Column="1"
Height="300"
Margin="10, 0">
<TextBlock
Text="STANDINGS"
Style="{StaticResource HeaderStyle}" />
<Grid
Background="LightGray">
<ListView
ItemsSource="{Binding DriverStanding}"
ItemTemplate="{StaticResource DriverDataTemplate}"
Height="300" />
</Grid>
</StackPanel>
</Grid>
</Grid>
</RelativePanel>
</ScrollViewer>
</Grid>
</base:PageBase>

Просмотреть файл

@ -0,0 +1,12 @@
namespace SplitView.Views
{
using Base;
public sealed partial class HomeView : PageBase
{
public HomeView()
{
this.InitializeComponent();
}
}
}

Просмотреть файл

@ -0,0 +1,94 @@
<base:PageBase
x:Class="SplitView.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView"
xmlns:base="using:SplitView.Views.Base"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:behaviors="using:SplitView.Behaviors"
mc:Ignorable="d"
DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="wideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="641" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Splitter.DisplayMode" Value="CompactInline"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="narrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Splitter.DisplayMode" Value="Overlay"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<SplitView x:Name="Splitter"
DisplayMode="CompactInline"
Background="{StaticResource BackgroundBrush}"
PaneBackground="{StaticResource BackgroundPaneBrush}"
PanePlacement="Left"
CompactPaneLength="60"
OpenPaneLength="240"
IsPaneOpen="{Binding IsPaneOpen}">
<SplitView.Pane>
<RelativePanel>
<RadioButton
x:Name="BackButton"
Command="{Binding BackCommand}"
Background="{StaticResource SystemControlBackgroundAccentBrush}"
Width="240"
Margin="0, 50, 0, 0">
<RadioButton.Tag>
<TextBlock Text=""
FontFamily="Segoe MDL2 Assets"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Margin="24, 0, 0 ,0" />
</RadioButton.Tag>
</RadioButton>
<ListView
ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedMenuItem, Mode=TwoWay}"
ItemTemplate="{StaticResource MenuItemDataTemplate}"
behaviors:ItemClickCommandBehavior.Command="{Binding NavigateCommand}"
SelectionMode="Single"
IsItemClickEnabled="True"
Margin="0, 10, 0, 0"
RelativePanel.Below="BackButton" />
</RelativePanel>
</SplitView.Pane>
<Frame x:Name="SplitViewFrame"
Margin="0, 10" />
</SplitView>
<Grid
Background="{StaticResource AccentBrush}"
Height="50"
VerticalAlignment="Top">
<ToggleButton
x:Name="HamburguerButton"
Style="{StaticResource SymbolButton}"
Command="{Binding HamburgerCommand}"
VerticalAlignment="Top"
Foreground="White"
Margin="0,5,0,0">
<ToggleButton.Content>
<Border Background="Transparent"
Width="40"
Height="40">
<FontIcon x:Name="Hamburger"
FontFamily="Segoe MDL2 Assets"
Glyph="&#xE700;" />
</Border>
</ToggleButton.Content>
</ToggleButton>
</Grid>
</Grid>
</base:PageBase>

Просмотреть файл

@ -0,0 +1,14 @@
namespace SplitView.Views
{
using Base;
public sealed partial class MainView : PageBase
{
public MainView()
{
this.InitializeComponent();
base.SplitViewFrame = SplitViewFrame;
}
}
}

Просмотреть файл

@ -0,0 +1,23 @@
<base:PageBase
x:Class="SplitView.Views.StandingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SplitView"
xmlns:base="using:SplitView.Views.Base"
xmlns:behaviors="using:SplitView.Behaviors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding StandingsViewModel, Source={StaticResource Locator}}">
<Grid>
<Grid.Transitions>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Grid.Transitions>
<ListView
ItemsSource="{Binding DriverStanding}"
ItemTemplate="{StaticResource DriverDataTemplate}"
Margin="0, 40, 0, 0" />
</Grid>
</base:PageBase>

Просмотреть файл

@ -0,0 +1,12 @@
namespace SplitView.Views
{
using Base;
public sealed partial class StandingsView : PageBase
{
public StandingsView()
{
this.InitializeComponent();
}
}
}

Двоичные данные
SplitView Back Button/SplitView/bin/Debug/App.xbf Normal file

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/SplitView/bin/Debug/AppX/App.xbf Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!--
Learn more about Application Insights configuration with ApplicationInsights.config here:
http://go.microsoft.com/fwlink/?LinkID=513840
-->
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows" />
</TelemetryModules>
<ContextInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights" />
</ContextInitializers>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights" />
</TelemetryInitializers>
<TelemetryChannel>
<DeveloperMode>true</DeveloperMode>
</TelemetryChannel>
</ApplicationInsights>

Просмотреть файл

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp build" xmlns:build="http://schemas.microsoft.com/developer/appx/2015/build">
<!--
THIS PACKAGE MANIFEST FILE IS GENERATED BY THE BUILD PROCESS.
Changes to this file will be lost when it is regenerated. To correct errors in this file, edit the source .appxmanifest file.
For more information on package manifest files, see http://go.microsoft.com/fwlink/?LinkID=241727
-->
<Identity Name="0292bb5c-575d-452b-9727-37959a650d0f" Publisher="CN=Javier" Version="1.0.0.0" ProcessorArchitecture="neutral" />
<mp:PhoneIdentity PhoneProductId="0292bb5c-575d-452b-9727-37959a650d0f" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>SplitView</DisplayName>
<PublisherDisplayName>Javier</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetPlatform Name="Windows.Universal" MinVersion="10.0.10030.0" MaxVersionTested="10.0.10030.0" />
</Dependencies>
<Resources>
<Resource Language="EN-US" />
</Resources>
<Applications>
<Application Id="App" Executable="SplitView.exe" EntryPoint="SplitView.App">
<uap:VisualElements DisplayName="SplitView" Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\SmallLogo.png" Description="SplitView" ForegroundText="light" BackgroundColor="#464646">
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>CLRHost.dll</Path>
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.TelemetryClient" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.RequestTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.TelemetryContext" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.TraceTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.ExceptionTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.MetricTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.EventTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.DataContracts.PageViewTelemetry" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Channel.OutOfProcessTelemetryChannel" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Channel.InProcessTelemetryChannel" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.TimestampPropertyInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.SequencePropertyInitializer" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>
<build:Metadata>
<build:Item Name="TargetFrameworkMoniker" Value=".NETCore,Version=v4.5.1" />
<build:Item Name="VisualStudio" Version="14.0" />
<build:Item Name="VisualStudioEdition" Value="Microsoft Visual Studio Ultimate 2015 CTP" />
<build:Item Name="OperatingSystem" Version="10.0.10041.0 (fbl_impressive.150313-1821)" />
<build:Item Name="Microsoft.Build.AppxPackage.dll" Version="14.0.22609.0" />
<build:Item Name="ProjectGUID" Value="{8CB16DBD-D8B6-48A3-91C9-45E9FBE80632}" />
<build:Item Name="ilc.exe" Version="1.0.22514.06 built by: PROJECTNREL" />
<build:Item Name="Microsoft.Windows.UI.Xaml.Build.Tasks.dll" Version="14.0.22710.0" />
<build:Item Name="MakePri.exe" Version="10.0.10030.0 (winmain_prs.150226-1653)" />
</build:Metadata>
</Package>

Двоичные данные
SplitView Back Button/SplitView/bin/Debug/AppX/Assets/Banner.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 78 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 320 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 406 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 350 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 499 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 272 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 340 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 437 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 281 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 801 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 329 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.1 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 429 B

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.1 KiB

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
SplitView Back Button/SplitView/bin/Debug/AppX/Newtonsoft.Json.dll Normal file

Двоичный файл не отображается.

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше