<reference file="Xamarin.Forms.Maps.dll" />
<reference file="Xamarin.Forms.Maps.Android.dll" />
</group>
- <group targetFramework="win81">
- <reference file="Xamarin.Forms.Maps.dll" />
- </group>
- <group targetFramework="wpa81">
- <reference file="Xamarin.Forms.Maps.dll" />
- <reference file="Xamarin.Forms.Maps.WinRT.Phone.dll" />
- </group>
<group targetFramework="uap10.0">
<reference file="Xamarin.Forms.Maps.dll" />
<reference file="Xamarin.Forms.Maps.UWP.dll" />
</group>
- <group targetFramework="WP80">
- <reference file="Xamarin.Forms.Maps.dll" />
- <reference file="Xamarin.Forms.Maps.WP8.dll" />
- </group>
<group targetFramework="Xamarin.Mac">
- <reference file="Xamarin.Forms.Maps.dll" />
+ <reference file="Xamarin.Forms.Maps.dll" />
<reference file="Xamarin.Forms.Maps.macOS.dll" />
</group>
</references>
<file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\Xamarin.iOS10" />
<file src="..\docs\Xamarin.Forms.Maps.xml" target="lib\Xamarin.iOS10" />
- <file src="..\Xamarin.Forms.Maps.WP8\bin\$Configuration$\Xamarin.Forms.Maps.WP8.dll" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\WP80" />
- <file src="..\docs\Xamarin.Forms.Maps.xml" target="lib\WP80" />
-
<!--UWP-->
<file src="..\Xamarin.Forms.Maps.UWP\bin\$Configuration$\Xamarin.Forms.Maps.UWP.dll" target="lib\uap10.0" />
<file src="..\Xamarin.Forms.Maps.UWP\bin\$Configuration$\Xamarin.Forms.Maps.UWP.pri" target="lib\uap10.0" />
<file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\uap10.0" />
-
- <!--WinRT Phone-->
- <file src="..\Xamarin.Forms.Maps.WinRT.Phone\bin\$Configuration$\Xamarin.Forms.Maps.WinRT.Phone.dll" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Maps.WinRT.Phone\bin\$Configuration$\Xamarin.Forms.Maps.WinRT.Phone.pri" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\wpa81" />
-
- <!--WinRT Tablet-->
- <file src="Xamarin.Forms.Maps.targets" target="build\win81\Xamarin.Forms.Maps$IdAppend$.targets" />
- <file src="Xamarin.Forms.Maps.props" target="build\win81\Xamarin.Forms.Maps$IdAppend$.props" />
-
- <file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\win81" />
- <file src="..\docs\Xamarin.Forms.Maps.xml" target="lib\win81" />
-
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\x86\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.dll" target="build\win81\x86" />
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\x86\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.pri" target="build\win81\x86" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.dll" target="build\win81\x86" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.pri" target="build\win81\x86" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.xr.xml" target="build\win81\x86\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\Resources.xbf" target="build\win81\x86\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\TabletResources.xbf" target="build\win81\x86\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x86\$Configuration$\FormsTextBoxStyle.xbf" target="build\win81\x86\Xamarin.Forms.Platform.WinRT.Tablet" />
-
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\x64\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.dll" target="build\win81\x64" />
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\x64\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.pri" target="build\win81\x64" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.dll" target="build\win81\x64" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.pri" target="build\win81\x64" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.xr.xml" target="build\win81\x64\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\Resources.xbf" target="build\win81\x64\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\TabletResources.xbf" target="build\win81\x64\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\x64\$Configuration$\FormsTextBoxStyle.xbf" target="build\win81\x64\Xamarin.Forms.Platform.WinRT.Tablet" />
-
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\ARM\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.dll" target="build\win81\ARM" />
- <file src="..\Xamarin.Forms.Maps.WinRT.Tablet\bin\ARM\$Configuration$\Xamarin.Forms.Maps.WinRT.Tablet.pri" target="build\win81\ARM" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.dll" target="build\win81\ARM" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.pri" target="build\win81\ARM" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.xr.xml" target="build\win81\ARM\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\Resources.xbf" target="build\win81\ARM\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\TabletResources.xbf" target="build\win81\ARM\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\ARM\$Configuration$\FormsTextBoxStyle.xbf" target="build\win81\ARM\Xamarin.Forms.Platform.WinRT.Tablet" />
<!-- Xaml Design-time Stuff -->
<file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\portable-win+net45+wp80+win81+wpa81\Design" />
<file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\netstandard1.0" />
<file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\MonoAndroid10\Design" />
<file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\Xamarin.iOS10\Design" />
- <file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\WP80\Design" />
- <file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\wpa81\Design" />
- <file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\win81\Design" />
<file src="..\Xamarin.Forms.Maps.Design\bin\$Configuration$\Xamarin.Forms.Maps.Design.dll" target="lib\uap10.0\Design" />
- <file src="..\Xamarin.Forms.Maps.MacOS\bin\$Configuration$\Xamarin.Forms.Maps.macOS.dll" target="lib\Xamarin.Mac" />
- <file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\Xamarin.Mac" />
+ <file src="..\Xamarin.Forms.Maps.MacOS\bin\$Configuration$\Xamarin.Forms.Maps.macOS.dll" target="lib\Xamarin.Mac" />
+ <file src="..\Xamarin.Forms.Maps\bin\$Configuration$\Xamarin.Forms.Maps.dll" target="lib\Xamarin.Mac" />
<file src="..\docs\Xamarin.Forms.Maps.xml" target="lib\Xamarin.Mac" />
</files>
</package>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'Windows' AND ( '$(Platform)' == 'x86' or '$(Platform)' == 'x64' or '$(Platform)' == 'ARM ')">
- <SDKReference Include="Bing.Maps.Xaml, Version=1.313.0825.0">
- <Name>Bing Maps for C#, C++, or Visual Basic</Name>
- </SDKReference>
- <SDKReference Include="Microsoft.VCLibs, version=12.0">
- <Name>Microsoft Visual C++ 2013 Runtime Package for Windows</Name>
- </SDKReference>
- </ItemGroup>
-</Project>
\ No newline at end of file
+++ /dev/null
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Target Name="Debug" BeforeTargets="BeforeBuild" >
- <Message Text="TargetPlatformIdentifier - $(TargetPlatformIdentifier)" Importance="high"></Message>
- </Target>
-
- <Target Name="PlatformCheck" BeforeTargets="InjectReference"
- Condition=" (('$(TargetPlatformIdentifier)' == 'Windows') AND ('$(Platform)' != 'x86') AND ('$(Platform)' != 'ARM') AND ('$(Platform)' != 'x64') )">
- <Error Text="$(MSBuildThisFileName) does not work correctly on '$(Platform)'
- platform. You need to specify platform (x86 / x64 or ARM)." />
- </Target>
-
- <Target Name="InjectReference" BeforeTargets="ResolveAssemblyReferences">
- <ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'Windows' AND ( '$(Platform)' == 'x86' or '$(Platform)' == 'x64' or '$(Platform)' == 'ARM')">
- <Reference Include="Xamarin.Forms.Maps.WinRT.Tablet">
- <HintPath>$(MSBuildThisFileDirectory)$(Platform)\Xamarin.Forms.Maps.WinRT.Tablet.dll</HintPath>
- </Reference>
- <Reference Include="Xamarin.Forms.Platform.WinRT.Tablet">
- <HintPath>$(MSBuildThisFileDirectory)$(Platform)\Xamarin.Forms.Platform.WinRT.Tablet.dll</HintPath>
- </Reference>
- </ItemGroup>
- </Target>
-</Project>
<group targetFramework="MonoAndroid10">
<reference file="Xamarin.Forms.Pages.Azure.dll" />
</group>
- <group targetFramework="win81">
- <reference file="Xamarin.Forms.Pages.Azure.dll" />
- </group>
- <group targetFramework="wpa81">
- <reference file="Xamarin.Forms.Pages.Azure.dll" />
- </group>
<group targetFramework="uap10.0">
<reference file="Xamarin.Forms.Pages.Azure.dll" />
</group>
- <group targetFramework="WP80">
- <reference file="Xamarin.Forms.Pages.Azure.dll" />
- </group>
</references>
</metadata>
<files>
<file src="..\Xamarin.Forms.Pages.Azure\bin\$Configuration$\Xamarin.Forms.Pages.Azure.dll" target="lib\Xamarin.iOS10" />
- <file src="..\Xamarin.Forms.Pages.Azure\bin\$Configuration$\Xamarin.Forms.Pages.Azure.dll" target="lib\WP80" />
-
- <!--UWP-->
<file src="..\Xamarin.Forms.Pages.Azure\bin\$Configuration$\Xamarin.Forms.Pages.Azure.dll" target="lib\uap10.0" />
-
- <!--WinRT Phone-->
- <file src="..\Xamarin.Forms.Pages.Azure\bin\$Configuration$\Xamarin.Forms.Pages.Azure.dll" target="lib\wpa81" />
-
- <!--WinRT Tablet-->
- <file src="..\Xamarin.Forms.Pages.Azure\bin\$Configuration$\Xamarin.Forms.Pages.Azure.dll" target="lib\win81" />
-
+
</files>
</package>
<group targetFramework="MonoAndroid10">
<reference file="Xamarin.Forms.Pages.dll" />
</group>
- <group targetFramework="win81">
- <reference file="Xamarin.Forms.Pages.dll" />
- </group>
- <group targetFramework="wpa81">
- <reference file="Xamarin.Forms.Pages.dll" />
- </group>
<group targetFramework="uap10.0">
<reference file="Xamarin.Forms.Pages.dll" />
</group>
- <group targetFramework="WP80">
- <reference file="Xamarin.Forms.Pages.dll" />
- </group>
</references>
</metadata>
<files>
<file src="..\Xamarin.Forms.Pages\bin\$Configuration$\Xamarin.Forms.Pages.dll" target="lib\Xamarin.iOS10" />
- <file src="..\Xamarin.Forms.Pages\bin\$Configuration$\Xamarin.Forms.Pages.dll" target="lib\WP80" />
-
- <!--UWP-->
<file src="..\Xamarin.Forms.Pages\bin\$Configuration$\Xamarin.Forms.Pages.dll" target="lib\uap10.0" />
-
- <!--WinRT Phone-->
- <file src="..\Xamarin.Forms.Pages\bin\$Configuration$\Xamarin.Forms.Pages.dll" target="lib\wpa81" />
-
- <!--WinRT Tablet-->
- <file src="..\Xamarin.Forms.Pages\bin\$Configuration$\Xamarin.Forms.Pages.dll" target="lib\win81" />
-
</files>
</package>
<description>Build native UIs for iOS, Android, and Windows Phone from a single, shared C# codebase</description>
<copyright>Copyright 2013-2017</copyright>
<dependencies>
- <group targetFramework="WP80">
- <dependency id="WPtoolkit" version="4.2013.08.16"/>
- </group>
<group targetFramework="MonoAndroid10">
<dependency id="Xamarin.Android.Support.v4" version="[23.3.0]"/>
<dependency id="Xamarin.Android.Support.Design" version="[23.3.0]"/>
<reference file="FormsViewGroup.dll" />
<reference file="Xamarin.Forms.Platform.Android.dll" />
</group>
- <group targetFramework="win81">
- <reference file="Xamarin.Forms.Core.dll" />
- <reference file="Xamarin.Forms.Platform.dll" />
- <reference file="Xamarin.Forms.Xaml.dll" />
- <reference file="Xamarin.Forms.Platform.WinRT.dll" />
- <reference file="Xamarin.Forms.Platform.WinRT.Tablet.dll" />
- </group>
- <group targetFramework="wpa81">
- <reference file="Xamarin.Forms.Core.dll" />
- <reference file="Xamarin.Forms.Platform.dll" />
- <reference file="Xamarin.Forms.Xaml.dll" />
- <reference file="Xamarin.Forms.Platform.WinRT.dll" />
- <reference file="Xamarin.Forms.Platform.WinRT.Phone.dll" />
- </group>
<group targetFramework="uap10.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.UAP.dll" />
</group>
- <group targetFramework="WP80">
- <reference file="Xamarin.Forms.Core.dll" />
- <reference file="Xamarin.Forms.Platform.dll" />
- <reference file="Xamarin.Forms.Xaml.dll" />
- <reference file="Xamarin.Forms.Platform.WP8.dll" />
- </group>
<group targetFramework="Xamarin.Mac">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.macOS.dll" />
<file src="..\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\Xamarin.iOS10\Design" />
- <file src="..\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\WP80\Design" />
- <file src="..\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\WP80\Design" />
-
- <file src="..\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\wpa81\Design" />
- <file src="..\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\wpa81\Design" />
-
- <file src="..\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\win81\Design" />
- <file src="..\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\win81\Design" />
-
<file src="..\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\uap10.0\Design" />
<file src="..\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\uap10.0\Design" />
<file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\docs\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\Stubs\Xamarin.Forms.Platform.iOS\bin\iPhone\$Configuration$\Xamarin.Forms.Platform.dll" target="lib\Xamarin.iOS10" />
-
- <!--Windows Phone 8-->
- <file src="..\Xamarin.Forms.Platform.WP8\bin\$Configuration$\Xamarin.Forms.Platform.WP8.dll" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Platform.WP8\bin\$Configuration$\Xamarin.Forms.Platform.WP8.*pdb" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.dll" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.*pdb" target="lib\WP80" />
- <file src="..\docs\Xamarin.Forms.Core.xml" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.dll" target="lib\WP80" />
- <file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.*pdb" target="lib\WP80" />
- <file src="..\docs\Xamarin.Forms.Xaml.xml" target="lib\WP80" />
- <file src="..\Stubs\Xamarin.Forms.Platform.WP8\bin\$Configuration$\Xamarin.Forms.Platform.dll" target="lib\WP80" />
-
- <!--WinRT Phone-->
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.dll" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.pri" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.xr.xml" target="lib\wpa81\Xamarin.Forms.Platform.WinRT" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Phone.dll" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Phone.pri" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Phone.xr.xml" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
- <file src="..\Xamarin.Forms.Platform\bin\$Configuration$\Xamarin.Forms.Platform.dll" target="lib\wpa81" />
-
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\StepperControl.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT" />
-
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\PhoneResources.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\FormsProgressBarStyle.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\FormsTextBoxStyle.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\Resources.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Phone\bin\$Configuration$\SearchBox.xbf" target="lib\wpa81\Xamarin.Forms.Platform.WinRT.Phone" />
-
- <file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.dll" target="lib\wpa81" />
- <file src="..\docs\Xamarin.Forms.Core.xml" target="lib\wpa81" />
- <file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.dll" target="lib\wpa81" />
- <file src="..\docs\Xamarin.Forms.Xaml.xml" target="lib\wpa81" />
-
- <!--WinRT Desktop-->
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.dll" target="lib\win81" />
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.pri" target="lib\win81" />
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.xr.xml" target="lib\win81\Xamarin.Forms.Platform.WinRT" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.dll" target="lib\win81" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.pri" target="lib\win81" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\Xamarin.Forms.Platform.WinRT.Tablet.xr.xml" target="lib\win81\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform\bin\$Configuration$\Xamarin.Forms.Platform.dll" target="lib\win81" />
-
- <file src="..\Xamarin.Forms.Platform.WinRT\bin\$Configuration$\StepperControl.xbf" target="lib\win81\Xamarin.Forms.Platform.WinRT" />
-
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\Resources.xbf" target="lib\win81\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\TabletResources.xbf" target="lib\win81\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\FormsTextBoxStyle.xbf" target="lib\win81\Xamarin.Forms.Platform.WinRT.Tablet" />
- <file src="..\Xamarin.Forms.Platform.WinRT.Tablet\bin\$Configuration$\FormsProgressBarStyle.xbf" target="lib\win81\Xamarin.Forms.Platform.WinRT.Tablet" />
-
- <file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.dll" target="lib\win81" />
- <file src="..\docs\Xamarin.Forms.Core.xml" target="lib\win81" />
- <file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.dll" target="lib\win81" />
- <file src="..\docs\Xamarin.Forms.Xaml.xml" target="lib\win81" />
-
+
<!--UWP-->
<file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\Xamarin.Forms.Platform.UAP.dll" target="lib\uap10.0" />
<file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\Xamarin.Forms.Platform.UAP.pri" target="lib\uap10.0" />
<file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\PageControlStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" />
<file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\TabbedPageStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" />
<file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\FormsEmbeddedPageWrapper.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" />
-
+
<!--Mac-->
<file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.dll" target="lib\Xamarin.Mac" />
<file src="..\Xamarin.Forms.Xaml\bin\$Configuration$\Xamarin.Forms.Xaml.dll" target="lib\Xamarin.Mac" />
+++ /dev/null
-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("Xamarin.Forms.Platform.WP8")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Xamarin.Forms.Platform.WP8")]
-[assembly: AssemblyCopyright("Copyright © 2015")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: InternalsVisibleTo ("Xamarin.Forms.Core")]
-
-// 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)]
\ No newline at end of file
+++ /dev/null
-<?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>
- <ProductVersion>10.0.20506</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{483CDAE7-4353-4AB2-9C20-145A9F148FAD}</ProjectGuid>
- <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Platform</RootNamespace>
- <AssemblyName>Xamarin.Forms.Platform</AssemblyName>
- <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
- <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
- <SilverlightApplication>false</SilverlightApplication>
- <ValidateXaml>true</ValidateXaml>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
- <RestorePackages>true</RestorePackages>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>TRACE;DEBUG;NETFX_CORE;WINDOWS_PHONE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\..\Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8.csproj">
- <Project>{517b6ae0-792b-4665-9376-5ca33e539181}</Project>
- <Name>Xamarin.Forms.Platform.WP8</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Platform.cs">
- <Link>Xamarin.Forms.Platform.cs</Link>
- </Compile>
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '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" />-->
- <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>
- -->
-</Project>
\ No newline at end of file
#if __ANDROID__
using Xamarin.Forms.Platform.Android;
-#elif WINDOWS_PHONE || WINDOWS_PHONE_APP
-using Xamarin.Forms.Platform.WinPhone;
#elif __IOS__
using Xamarin.Forms.Platform.iOS;
#endif
-Subproject commit e1869d9fbec2659a178174bb1f5cd4395b2a1b32
+Subproject commit 09f3df2702da52c139f1d2e07fd42e5883cc77d2
+++ /dev/null
-<Application
- x:Class="Xamarin.Forms.ControlGallery.WP8.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:Xamarin.Forms.ControlGallery.WP8" 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>
+++ /dev/null
-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 Xamarin.Forms.ControlGallery.WP8.Resources;
-
-using Application = Xamarin.Forms.Application;
-
-namespace Xamarin.Forms.ControlGallery.WP8
-{
- public partial class App : System.Windows.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()
- {
- FormsMaps.Init (Controls.App.Config["WP8AppId"], Controls.App.Config["WP8AuthToken"]);
-
- // 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.
- 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
- void Application_Launching(object sender, LaunchingEventArgs e)
- {
- Debug.WriteLine ("Launching");
- }
-
- // Code to execute when the application is activated (brought to foreground)
- // This code will not execute when the application is first launched
- void Application_Activated(object sender, ActivatedEventArgs e)
- {
- Debug.WriteLine ("Closing");
- }
-
- // Code to execute when the application is deactivated (sent to background)
- // This code will not execute when the application is closing
- void Application_Deactivated(object sender, DeactivatedEventArgs e)
- {
- Debug.WriteLine ("Deactivated");
- }
-
- // Code to execute when the application is closing (eg, user hit Back)
- // This code will not execute when the application is deactivated
- void Application_Closing(object sender, ClosingEventArgs e)
- {
- Debug.WriteLine ("Closing");
- }
-
- // Code to execute if a navigation fails
- 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
- 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
- bool _phoneApplicationInitialized = false;
-
- // Do not add any additional code to this method
- 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
- void CompleteInitializePhoneApplication(object sender, System.Windows.Navigation.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;
- }
-
- void CheckForResetNavigation(object sender, System.Windows.Navigation.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;
- }
-
- void ClearBackStackAfterReset(object sender, System.Windows.Navigation.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.
- //
- 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.
- System.Windows.FlowDirection flow = (System.Windows.FlowDirection)Enum.Parse(typeof(System.Windows.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;
- }
- }
- }
-}
+++ /dev/null
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.ControlGallery.WP8
-{
- internal class BrokenNativeControl : Panel
- {
- public BrokenNativeControl ()
- {
- _textBlock = new TextBlock {
- MinHeight = 0,
- MaxHeight = double.PositiveInfinity,
- MinWidth = 0,
- MaxWidth = double.PositiveInfinity,
- FontSize = 24,
- HorizontalAlignment = HorizontalAlignment.Center
- };
-
- Children.Add (_textBlock);
-
- Background = new RadialGradientBrush (Colors.Green, Colors.Blue);
- }
-
- public static readonly DependencyProperty TextProperty = DependencyProperty.Register (
- "Text", typeof(string), typeof(BrokenNativeControl), new PropertyMetadata (default(string), PropertyChangedCallback));
-
- static void PropertyChangedCallback (DependencyObject dependencyObject,
- DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- ((BrokenNativeControl)dependencyObject)._textBlock.Text = (string)dependencyPropertyChangedEventArgs.NewValue;
- }
-
- public string Text
- {
- get { return (string)GetValue (TextProperty); }
- set { SetValue (TextProperty, value); }
- }
-
- readonly TextBlock _textBlock;
-
- protected override System.Windows.Size ArrangeOverride (System.Windows.Size finalSize)
- {
- _textBlock.Arrange (new Rect (0, 0, finalSize.Width, finalSize.Height));
- return finalSize;
- }
-
- protected override System.Windows.Size MeasureOverride (System.Windows.Size availableSize)
- {
- _textBlock.Measure (availableSize);
-
- // This deliberately does something wrong so we can demo fixing it
- return new System.Windows.Size (600, _textBlock.DesiredSize.Height);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Xamarin.Forms.ControlGallery.WP8.Resources;
-
-namespace Xamarin.Forms.ControlGallery.WP8
-{
- /// <summary>
- /// Provides access to string resources.
- /// </summary>
- public class LocalizedStrings
- {
- static AppResources _localizedResources = new AppResources();
-
- public AppResources LocalizedResources { get { return _localizedResources; } }
- }
-}
+++ /dev/null
-<winPhone:FormsApplicationPage
- x:Class="Xamarin.Forms.ControlGallery.WP8.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:winPhone="clr-namespace:Xamarin.Forms.Platform.WinPhone;assembly=Xamarin.Forms.Platform.WP8"
- 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" Grid.Row="0" Margin="12,17,0,28">
- <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
- <TextBlock Text="page name" 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" />-->
- </Grid>
-
-</winPhone:FormsApplicationPage>
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Automation.Peers;
-using System.Windows.Controls;
-using System.Windows.Media;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Xamarin.Forms.ControlGallery.WP8.Resources;
-using Xamarin.Forms;
-using Xamarin.Forms.ControlGallery.WP8;
-using Xamarin.Forms.Controls;
-using Xamarin.Forms.Maps.WP8;
-using Xamarin.Forms.Platform.WinPhone;
-
-[assembly: Dependency (typeof (StringProvider))]
-namespace Xamarin.Forms.ControlGallery.WP8
-{
- public class StringProvider : IStringProvider
- {
- public string CoreGalleryTitle { get { return "WP8 Core Gallery"; } }
- }
-
-#if PRE_APPLICATION_CLASS
- public partial class MainPage : PhoneApplicationPage
- {
- public MainPage ()
- {
- InitializeComponent();
-
- Forms.Init ();
- FormsMaps.Init ();
-
- Content = CoreGallery.GetMainPage ().ConvertPageToUIElement (this);
-
- MessagingCenter.Subscribe<RootPagesGallery, Type>(this, Messages.ChangeRoot, (sender, pagetype) =>
- {
- var page = ((Page) Activator.CreateInstance(pagetype));
- app.MainPage = page;
- });
-
- MessagingCenter.Subscribe<HomeButton>(this, Messages.GoHome, (sender) => {
- var page = FormsApp.GetFormsApp ();
- app.MainPage = page;
- });
- }
- }
-
-#else
- public partial class MainPage : FormsApplicationPage
- {
- // Constructor
- public MainPage()
- {
- InitializeComponent();
-
- Forms.Init ();
- FormsMaps.Init ();
-
- var app = new Controls.App ();
-
- // When the native control gallery loads up, it'll let us know so we can add the nested native controls
- MessagingCenter.Subscribe<NestedNativeControlGalleryPage>(this, NestedNativeControlGalleryPage.ReadyForNativeControlsMessage, AddNativeControls);
-
- LoadApplication (app);
- }
-
- void AddNativeControls (NestedNativeControlGalleryPage page)
- {
- if (page.NativeControlsAdded) {
- return;
- }
-
- StackLayout sl = page.Layout;
-
- // Create and add a native TextBlock
- var originalText = "I am a native TextBlock";
- var textBlock = new TextBlock {
- Text = originalText,
- FontSize = 14,
- FontFamily = new FontFamily ("HelveticaNeue")
- };
-
- sl?.Children.Add (textBlock);
-
- // Create and add a native Button
- var button = new System.Windows.Controls.Button { Content = "Click to toggle font size", Height = 80 };
- button.Click += (sender, args) => { textBlock.FontSize = textBlock.FontSize == 14 ? 24 : 14; };
-
- sl?.Children.Add (button.ToView ());
-
- // Create a control which we know doesn't behave correctly with regard to measurement
- var difficultControl = new BrokenNativeControl {
- Text = "Not Sized/Arranged Properly"
- };
-
- var difficultControl2 = new BrokenNativeControl {
- Text = "Fixed"
- };
-
- // Add the misbehaving controls, one with a custom delegate for ArrangeOverride
- sl?.Children.Add (difficultControl);
- sl?.Children.Add (difficultControl2,
- arrangeOverrideDelegate: (renderer, finalSize) => {
- if (finalSize.Width <= 0 || double.IsInfinity (finalSize.Width)) {
- return null;
- }
-
- FrameworkElement frameworkElement = renderer.Control;
-
- frameworkElement.Measure (finalSize);
-
- // The broken control always sizes itself to be 600 wide
- // We can re-center it by offsetting it during the Arrange call
- double diff = (finalSize.Width - 600) / 2;
- frameworkElement.Arrange (new Rect (diff, 0, finalSize.Width - diff, finalSize.Height));
-
- // Arranging the control to the left will make it show up past the edge of the stack layout
- // We can fix that by clipping it manually
- var clip = new RectangleGeometry { Rect = new Rect (-diff, 0, finalSize.Width, finalSize.Height) };
- frameworkElement.Clip = clip;
-
- return finalSize;
- }
- );
-
- page.NativeControlsAdded = true;
- }
- }
-#endif
-}
+++ /dev/null
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
- <Deployment.Parts>
- </Deployment.Parts>
-</Deployment>
+++ /dev/null
-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("Xamarin.Forms.ControlGallery.WP8")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Xamarin.Forms.ControlGallery.WP8")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[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("07d20f12-3e95-48a2-b6af-dd223a0a4d3b")]
-
-// 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")]
+++ /dev/null
-<?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="{67f3837c-c663-4668-9cd3-5e6c5abd59b8}" Title="Xamarin.Forms.ControlGallery.WP8" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="Xamarin.Forms.ControlGallery.WP8 author" Description="Sample description" Publisher="Xamarin.Forms.ControlGallery.WP8" PublisherID="{9e07f47c-403b-44af-8078-487f1d249780}">
- <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" />
- <Capability Name="ID_CAP_IDENTITY_DEVICE" />
- <Capability Name="ID_CAP_IDENTITY_USER" />
- </Capabilities>
- <Tasks>
- <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
- </Tasks>
- <Tokens>
- <PrimaryToken TokenID="Xamarin.Forms.ControlGallery.WP8Token" 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>Xamarin.Forms.ControlGallery.WP8</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
+++ /dev/null
-//------------------------------------------------------------------------------
-// <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 Xamarin.Forms.ControlGallery.WP8.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("Xamarin.Forms.ControlGallery.WP8.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);
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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>
+++ /dev/null
-<?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)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.20506</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{67F3837C-C663-4668-9CD3-5E6C5ABD59B8}</ProjectGuid>
- <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.ControlGallery.WP8</RootNamespace>
- <AssemblyName>Xamarin.Forms.ControlGallery.WP8</AssemblyName>
- <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
- <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
- <SilverlightApplication>true</SilverlightApplication>
- <SupportedCultures>
- </SupportedCultures>
- <XapOutputs>true</XapOutputs>
- <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
- <XapFilename>Xamarin.Forms.ControlGallery.WP8_$(Configuration)_$(Platform).xap</XapFilename>
- <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
- <SilverlightAppEntry>Xamarin.Forms.ControlGallery.WP8.App</SilverlightAppEntry>
- <ValidateXaml>true</ValidateXaml>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
- <RestorePackages>true</RestorePackages>
- <NuGetPackageImportStamp>
- </NuGetPackageImportStamp>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="App.xaml.cs">
- <DependentUpon>App.xaml</DependentUpon>
- </Compile>
- <Compile Include="BrokenNativeControl.cs" />
- <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="app.config" />
- <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="bank.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="coffee.png" />
- <Content Include="cover1.jpg">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="cover1small.jpg" />
- <Content Include="crimson.jpg" />
- <Content Include="crimsonsmall.jpg" />
- <Content Include="default.css" />
- <Content Include="local.html" />
- <Content Include="oasis.jpg" />
- <Content Include="oasissmall.jpg" />
- <Content Include="menuIcon.png" />
- <Content Include="photo.jpg">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="seth.png" />
- <Content Include="toolbar_close.png" />
- <Content Include="WebImages\XamarinLogo.png" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Resources\AppResources.resx">
- <Generator>PublicResXFileCodeGenerator</Generator>
- <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\Stubs\Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8 %28Forwarders%29.csproj">
- <Project>{483cdae7-4353-4ab2-9c20-145a9f148fad}</Project>
- <Name>Xamarin.Forms.Platform.WP8 %28Forwarders%29</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj">
- <Project>{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}</Project>
- <Name>Xamarin.Forms.Controls</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps.WP8\Xamarin.Forms.Maps.WP8.csproj">
- <Project>{9222D2B8-63A4-4A36-A80E-BC34F27E0951}</Project>
- <Name>Xamarin.Forms.Maps.WP8</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7D13BAC2-C6A4-416A-B07E-C169B199E52B}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8.csproj">
- <Project>{517B6AE0-792B-4665-9376-5CA33E539181}</Project>
- <Name>Xamarin.Forms.Platform.WP8</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Reference Include="Xamarin.Insights, Version=1.12.0.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\packages\Xamarin.Insights.1.12.3\lib\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.dll</HintPath>
- <Private>True</Private>
- </Reference>
- </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="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
- <PropertyGroup>
- <ErrorText>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=322105. The missing file is {0}.</ErrorText>
- </PropertyGroup>
- <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
- <Error Condition="!Exists('..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets'))" />
- </Target>
- <Import Project="..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
-</Project>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="Mono.Cecil" publicKeyToken="0738eb9f132ed756" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-0.9.6.0" newVersion="0.9.6.0" />
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
-</configuration>
\ No newline at end of file
+++ /dev/null
-html,body{margin:0;padding:10}
-body,p,h1{font-family:Chalkduster;font-style: italic;}
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<link rel="stylesheet" href="default.css">
-</head>
-<body>
-<h1>Xamarin.Forms</h1>
-<p>This is a local HTML page</p>
-
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Xamarin.Insights" version="1.12.3" targetFramework="wp8" />
-</packages>
\ No newline at end of file
+++ /dev/null
-<Application
- x:Class="Xamarin.Forms.ControlGallery.Windows.App"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.ControlGallery.Windows">
-
-</Application>
+++ /dev/null
-using System;
-using Windows.ApplicationModel;
-using Windows.ApplicationModel.Activation;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Navigation;
-
-namespace Xamarin.Forms.ControlGallery.Windows
-{
- public sealed partial class App
- {
- public App()
- {
- InitializeComponent();
- }
-
- protected override void OnLaunched(LaunchActivatedEventArgs e)
- {
-
-#if DEBUG
- if (System.Diagnostics.Debugger.IsAttached)
- {
- DebugSettings.EnableFrameRateCounter = true;
- }
-#endif
-
- var rootFrame = Window.Current.Content as global::Windows.UI.Xaml.Controls.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 global::Windows.UI.Xaml.Controls.Frame();
- // Set the default language
- rootFrame.Language = global::Windows.Globalization.ApplicationLanguages.Languages[0];
-
- rootFrame.NavigationFailed += OnNavigationFailed;
-
- Forms.Init (e);
- FormsMaps.Init (Controls.App.Config["Win8MapsAuthKey"]);
-
- // 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(MainPage), 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);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Windows.Foundation;
-using Windows.Graphics.Display;
-using Windows.UI;
-using Windows.UI.ViewManagement;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.ControlGallery.Windows
-{
- internal class BrokenNativeControl : Panel
- {
- public BrokenNativeControl ()
- {
- _textBlock = new TextBlock {
- MinHeight = 0,
- MaxHeight = double.PositiveInfinity,
- MinWidth = 0,
- MaxWidth = double.PositiveInfinity,
- FontSize = 24,
- HorizontalAlignment = HorizontalAlignment.Center
- };
-
- Children.Add (_textBlock);
-
- Background =
- new LinearGradientBrush (
- new GradientStopCollection { new GradientStop { Color = Colors.Green, Offset = 0.5}, new GradientStop { Color = Colors.Blue, Offset = 1} }, 0);
- }
-
- public static readonly DependencyProperty TextProperty = DependencyProperty.Register (
- "Text", typeof(string), typeof(BrokenNativeControl), new PropertyMetadata (default(string), PropertyChangedCallback));
-
- static void PropertyChangedCallback (DependencyObject dependencyObject,
- DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- ((BrokenNativeControl)dependencyObject)._textBlock.Text = (string)dependencyPropertyChangedEventArgs.NewValue;
- }
-
- public string Text
- {
- get { return (string)GetValue (TextProperty); }
- set { SetValue (TextProperty, value); }
- }
-
- readonly TextBlock _textBlock;
-
- protected override global::Windows.Foundation.Size ArrangeOverride(global::Windows.Foundation.Size finalSize)
- {
- _textBlock.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
- return finalSize;
- }
-
- protected override global::Windows.Foundation.Size MeasureOverride (global::Windows.Foundation.Size availableSize)
- {
- _textBlock.Measure (availableSize);
-
- // This deliberately does something wrong so we can demo fixing it
- var width = Window.Current.Bounds.Width * (int)DisplayProperties.ResolutionScale / 100;
-
- return new global::Windows.Foundation.Size (width, _textBlock.DesiredSize.Height);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Shapes;
-using Xamarin.Forms.Platform.WinRT;
-
-[assembly: ExportRenderer(typeof(Xamarin.Forms.Controls.Bugzilla42602.TextBoxView), typeof(Xamarin.Forms.ControlGallery.Windows.TextBoxViewRenderer))]
-namespace Xamarin.Forms.ControlGallery.Windows
-{
- public class TextBoxViewRenderer : BoxViewRenderer
- {
- Canvas m_Canvas;
-
- protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e)
- {
- base.OnElementChanged(e);
-
- ArrangeNativeChildren = true;
-
- if (m_Canvas != null)
- Children.Remove(m_Canvas);
-
- m_Canvas = new Canvas()
- {
- Width = 200,
- Height = 200,
- Background = new SolidColorBrush(global::Windows.UI.Color.FromArgb(0, 255, 255, 255)),
- IsHitTestVisible = false
- };
-
- Children.Add(m_Canvas);
-
- //ellipse
- Shape ellipse = new Ellipse()
- {
- Width = 100,
- Height = 100,
- Fill = new SolidColorBrush(global::Windows.UI.Color.FromArgb(255, 255, 0, 0)),
-
- };
- Canvas.SetLeft(ellipse, 0);
- Canvas.SetTop(ellipse, 0);
- m_Canvas.Children.Add(ellipse);
-
- //text
- TextBlock text = new TextBlock()
- {
- FontSize = 50,
- FontWeight = global::Windows.UI.Text.FontWeights.Normal,
- Text = "hello world",
- Foreground = new SolidColorBrush(global::Windows.UI.Color.FromArgb(255, 255, 0, 0))
- };
- Canvas.SetLeft(text, 0);
- Canvas.SetTop(text, 150);
- m_Canvas.Children.Add(text);
- }
- }
-}
+++ /dev/null
-<forms:WindowsPage
- x:Class="Xamarin.Forms.ControlGallery.Windows.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.ControlGallery.Windows"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:forms="using:Xamarin.Forms.Platform.WinRT"
- mc:Ignorable="d">
-
-</forms:WindowsPage>
\ No newline at end of file
+++ /dev/null
-using System;
-using Windows.Foundation;
-using Windows.Graphics.Display;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Xamarin.Forms.Controls;
-using Xamarin.Forms.Platform.WinRT;
-
-namespace Xamarin.Forms.ControlGallery.Windows
-{
- public sealed partial class MainPage
- {
- public MainPage ()
- {
- InitializeComponent ();
-
- var app = new Controls.App ();
-
- // When the native control gallery loads up, it'll let us know so we can add the nested native controls
- MessagingCenter.Subscribe<NestedNativeControlGalleryPage>(this, NestedNativeControlGalleryPage.ReadyForNativeControlsMessage, AddNativeControls);
-
- LoadApplication (app);
- }
-
- static void AddNativeControls (NestedNativeControlGalleryPage page)
- {
- if (page.NativeControlsAdded) {
- return;
- }
-
- StackLayout sl = page.Layout;
-
- // Create and add a native TextBlock
- var originalText = "I am a native TextBlock";
- var textBlock = new TextBlock {
- Text = originalText,
- FontSize = 14,
- FontFamily = new FontFamily ("HelveticaNeue")
- };
-
- sl?.Children.Add (textBlock);
-
- // Create and add a native Button
- var button = new global::Windows.UI.Xaml.Controls.Button { Content = "Click to toggle font size", Height = 80 };
- button.Click += (sender, args) => { textBlock.FontSize = textBlock.FontSize == 14 ? 24 : 14; };
-
- sl?.Children.Add (button.ToView ());
-
- // Create a control which we know doesn't behave correctly with regard to measurement
- var difficultControl = new BrokenNativeControl {
- Text = "Not Sized/Arranged Properly"
- };
-
- var difficultControl2 = new BrokenNativeControl {
- Text = "Fixed"
- };
-
- // Add the misbehaving controls, one with a custom delegate for ArrangeOverrideDelegate
- sl?.Children.Add (difficultControl);
- sl?.Children.Add (difficultControl2,
- arrangeOverrideDelegate: (renderer, finalSize) => {
- if (finalSize.Width <= 0 || double.IsInfinity (finalSize.Width)) {
- return null;
- }
-
- FrameworkElement frameworkElement = renderer.Control;
-
- frameworkElement.Measure (finalSize);
-
- // The broken control tries sizes itself to be the width of the screen
- var wrongSize = Window.Current.Bounds.Width * (int)DisplayProperties.ResolutionScale / 100;
-
- // We can re-center it by offsetting it during the Arrange call
- double diff = Math.Abs(finalSize.Width - wrongSize) / -2;
- frameworkElement.Arrange (new Rect (diff, 0, finalSize.Width - diff, finalSize.Height));
-
- // Arranging the control to the left will make it show up past the edge of the stack layout
- // We can fix that by clipping it manually
- var clip = new RectangleGeometry { Rect = new Rect (-diff, 0, finalSize.Width, finalSize.Height) };
- frameworkElement.Clip = clip;
-
- return finalSize;
- }
- );
-
- page.NativeControlsAdded = true;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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">
- <Identity Name="a4530307-5452-466a-8944-7925f27ddc21" Publisher="CN=xamarinforms" Version="1.0.0.0" />
- <Properties>
- <DisplayName>Xamarin.Forms.ControlGallery.Windows</DisplayName>
- <PublisherDisplayName>Xamarin Inc</PublisherDisplayName>
- <Logo>Assets\StoreLogo.png</Logo>
- </Properties>
- <Prerequisites>
- <OSMinVersion>6.3.0</OSMinVersion>
- <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
- </Prerequisites>
- <Resources>
- <Resource Language="x-generate" />
- </Resources>
- <Applications>
- <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="Xamarin.Forms.ControlGallery.Windows.App">
- <m2:VisualElements DisplayName="Xamarin.Forms.ControlGallery.Windows" Square150x150Logo="Assets\Logo.png" Square30x30Logo="Assets\SmallLogo.png" Description="Xamarin.Forms.ControlGallery.Windows" ForegroundText="light" BackgroundColor="#464646">
- <m2:SplashScreen Image="Assets\SplashScreen.png" />
- </m2:VisualElements>
- </Application>
- </Applications>
- <Capabilities>
- <Capability Name="internetClient" />
- <Capability Name="internetClientServer" />
- <Capability Name="privateNetworkClientServer" />
- <DeviceCapability Name="location" />
- </Capabilities>
-</Package>
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using Xamarin.Forms.ControlGallery.WinRT;
-using Xamarin.Forms.Controls;
-using Xamarin.Forms.Platform.WinRT;
-
-// 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("Xamarin.Forms.ControlGallery.Windows")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Xamarin.Forms.ControlGallery.Windows")]
-[assembly: AssemblyCopyright("Copyright © Xamarin Inc 2014")]
-[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)]
-
-// Deliberately broken image source and handler so we can test handling of image loading errors
-[assembly: ExportImageSourceHandler(typeof(FailImageSource), typeof(BrokenImageSourceHandler))]
\ No newline at end of file
+++ /dev/null
-using Xamarin.Forms;
-using Xamarin.Forms.ControlGallery.WinRT;
-using Xamarin.Forms.Controls;
-
-[assembly: Dependency (typeof (StringProvider))]
-
-namespace Xamarin.Forms.ControlGallery.WinRT
-{
- public class StringProvider : IStringProvider
- {
- public string CoreGalleryTitle {
- get { return "Windows Core Gallery"; }
- }
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="..\nuspec\Xamarin.Forms.Maps.props" Condition="Exists('..\nuspec\Xamarin.Forms.Maps.props')" />
- <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>{1251646E-7FC6-425C-9464-A35DF1FC8E4D}</ProjectGuid>
- <OutputType>AppContainerExe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.ControlGallery.Windows</RootNamespace>
- <AssemblyName>Xamarin.Forms.ControlGallery.Windows</AssemblyName>
- <DefaultLanguage>en-US</DefaultLanguage>
- <TargetPlatformVersion>8.1</TargetPlatformVersion>
- <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- <PackageCertificateKeyFile>Xamarin.Forms.ControlGallery.Windows_TemporaryKey.pfx</PackageCertificateKeyFile>
- <PackageCertificateThumbprint>F6B8DCDF4C040131855EE5A9116BCCF3CB62EAEF</PackageCertificateThumbprint>
- </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_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0618</NoWarn>
- </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_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0618</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\ARM\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>0618</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
- <OutputPath>bin\ARM\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>0618</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x64\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>0618</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
- <OutputPath>bin\x64\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>0618</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x86\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>0618</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
- <OutputPath>bin\x86\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>0618</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj">
- <Project>{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}</Project>
- <Name>Xamarin.Forms.Controls</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps.WinRT.Tablet\Xamarin.Forms.Maps.WinRT.Tablet.csproj">
- <Project>{e5c4698d-fb57-4eec-98c0-89e620f6920a}</Project>
- <Name>Xamarin.Forms.Maps.WinRT.Tablet</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT.Tablet\Xamarin.Forms.Platform.WinRT.Tablet.csproj">
- <Project>{d3f9265a-30ac-43e8-a3eb-59bb76d2d0bf}</Project>
- <Name>Xamarin.Forms.Platform.WinRT.Tablet</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="App.xaml.cs">
- <DependentUpon>App.xaml</DependentUpon>
- </Compile>
- <Compile Include="BrokenImageSourceHandler.cs" />
- <Compile Include="BrokenNativeControl.cs" />
- <Compile Include="CustomRenderers.cs" />
- <Compile Include="MainPage.xaml.cs">
- <DependentUpon>MainPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="StringProvider.cs" />
- </ItemGroup>
- <ItemGroup>
- <AppxManifest Include="Package.appxmanifest">
- <SubType>Designer</SubType>
- </AppxManifest>
- <None Include="Xamarin.Forms.ControlGallery.Windows_TemporaryKey.pfx" />
- </ItemGroup>
- <ItemGroup>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\bank.png">
- <Link>bank.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1.jpg">
- <Link>cover1.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1small.jpg">
- <Link>cover1small.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimson.jpg">
- <Link>crimson.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimsonsmall.jpg">
- <Link>crimsonsmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\menuIcon.png">
- <Link>menuIcon.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasis.jpg">
- <Link>oasis.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasissmall.jpg">
- <Link>oasissmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\photo.jpg">
- <Link>photo.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\seth.png">
- <Link>seth.png</Link>
- </Content>
- <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="coffee.png" />
- <Content Include="default.css" />
- <Content Include="local.html" />
- <Content Include="toolbar_close.png" />
- <Content Include="WebImages\XamarinLogo.png" />
- </ItemGroup>
- <ItemGroup>
- <ApplicationDefinition Include="App.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </ApplicationDefinition>
- </ItemGroup>
- <ItemGroup>
- <Page Include="MainPage.xaml">
- <SubType>Designer</SubType>
- <Generator>MSBuild:Compile</Generator>
- </Page>
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' ">
- <VisualStudioVersion>12.0</VisualStudioVersion>
- </PropertyGroup>
- <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
- <Import Project="$(XamlSpyInstallPath)MSBuild\FirstFloor.XamlSpy.WinRT.targets" Condition="'$(XamlSpyInstallPath)' != '' and '$(Configuration)' == 'DEBUG'" />
- <Import Project="..\nuspec\Xamarin.Forms.Maps.targets" Condition="Exists('..\nuspec\Xamarin.Forms.Maps.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
+++ /dev/null
-html,body{margin:0;padding:10}
-body,p,h1{font-family:Chalkduster;font-style: italic;}
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<link rel="stylesheet" href="default.css">
-</head>
-<body>
-<h1>Xamarin.Forms</h1>
-<p>This is a local HTML page</p>
-
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<Application
- x:Class="Xamarin.Forms.ControlGallery.WindowsPhone.App"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.ControlGallery.WindowsPhone">
-
-</Application>
\ No newline at end of file
+++ /dev/null
-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;
-
-// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=391641
-
-namespace Xamarin.Forms.ControlGallery.WindowsPhone
-{
- /// <summary>
- /// Provides application-specific behavior to supplement the default Application class.
- /// </summary>
- public sealed partial class App
- {
- TransitionCollection _transitions;
-
- /// <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()
- {
- InitializeComponent();
- Suspending += OnSuspending;
- }
-
- /// <summary>
- /// Invoked when the application is launched normally by the end user. Other entry points
- /// will be used when the application is launched to open a specific file, to display
- /// search results, and so forth.
- /// </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)
- {
- DebugSettings.EnableFrameRateCounter = true;
- }
-#endif
-
- var rootFrame = Window.Current.Content as global::Windows.UI.Xaml.Controls.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 global::Windows.UI.Xaml.Controls.Frame();
-
- // TODO: change this value to a cache size that is appropriate for your application
- rootFrame.CacheSize = 1;
-
- Forms.Init (e);
- FormsMaps.Init (Controls.App.Config["WinPhoneMapsAuthKey"]);
-
- 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)
- {
- // Removes the turnstile navigation for startup.
- if (rootFrame.ContentTransitions != null)
- {
- _transitions = new TransitionCollection();
- foreach (var c in rootFrame.ContentTransitions)
- {
- _transitions.Add(c);
- }
- }
-
- rootFrame.ContentTransitions = null;
- rootFrame.Navigated += RootFrame_FirstNavigated;
-
- // When the navigation stack isn't restored navigate to the first page,
- // configuring the new page by passing required information as a navigation
- // parameter
- if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
- {
- throw new Exception("Failed to create initial page");
- }
- }
-
- // Ensure the current window is active
- Window.Current.Activate();
- }
-
- /// <summary>
- /// Restores the content transitions after the app has launched.
- /// </summary>
- /// <param name="sender">The object where the handler is attached.</param>
- /// <param name="e">Details about the navigation event.</param>
- void RootFrame_FirstNavigated(object sender, global::Windows.UI.Xaml.Navigation.NavigationEventArgs e)
- {
- var rootFrame = sender as global::Windows.UI.Xaml.Controls.Frame;
- rootFrame.ContentTransitions = _transitions ?? new TransitionCollection() { new NavigationThemeTransition() };
- rootFrame.Navigated -= RootFrame_FirstNavigated;
- }
-
- /// <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>
- void OnSuspending(object sender, SuspendingEventArgs e)
- {
- var deferral = e.SuspendingOperation.GetDeferral();
-
- // TODO: Save application state and stop any background activity
- deferral.Complete();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Windows.Foundation;
-using Windows.Graphics.Display;
-using Windows.UI;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using WSize = Windows.Foundation.Size;
-
-namespace Xamarin.Forms.ControlGallery.WindowsPhone
-{
- internal class BrokenNativeControl : Panel
- {
- public BrokenNativeControl ()
- {
- _textBlock = new TextBlock {
- MinHeight = 0,
- MaxHeight = double.PositiveInfinity,
- MinWidth = 0,
- MaxWidth = double.PositiveInfinity,
- FontSize = 24,
- HorizontalAlignment = HorizontalAlignment.Center
- };
-
- Children.Add (_textBlock);
-
- Background =
- new LinearGradientBrush (
- new GradientStopCollection { new GradientStop { Color = Colors.Green, Offset = 0.5}, new GradientStop { Color = Colors.Blue, Offset = 1} }, 0);
- }
-
- public static readonly DependencyProperty TextProperty = DependencyProperty.Register (
- "Text", typeof(string), typeof(BrokenNativeControl), new PropertyMetadata (default(string), PropertyChangedCallback));
-
- static void PropertyChangedCallback (DependencyObject dependencyObject,
- DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- ((BrokenNativeControl)dependencyObject)._textBlock.Text = (string)dependencyPropertyChangedEventArgs.NewValue;
- }
-
- public string Text
- {
- get { return (string)GetValue (TextProperty); }
- set { SetValue (TextProperty, value); }
- }
-
- readonly TextBlock _textBlock;
-
- protected override WSize ArrangeOverride(WSize finalSize)
- {
- _textBlock.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
- return finalSize;
- }
-
- protected override WSize MeasureOverride (WSize availableSize)
- {
- _textBlock.Measure (availableSize);
-
- // This deliberately does something wrong so we can demo fixing it
- var width = Window.Current.Bounds.Width * (int)DisplayProperties.ResolutionScale / 100;
-
- // This deliberately does something wrong so we can demo fixing it
- return new WSize (width, _textBlock.DesiredSize.Height);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Shapes;
-using Xamarin.Forms.Platform.WinRT;
-
-[assembly: ExportRenderer(typeof(Xamarin.Forms.Controls.Bugzilla42602.TextBoxView), typeof(Xamarin.Forms.ControlGallery.WindowsPhone.TextBoxViewRenderer))]
-namespace Xamarin.Forms.ControlGallery.WindowsPhone
-{
- public class TextBoxViewRenderer : BoxViewRenderer
- {
- Canvas m_Canvas;
-
- protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e)
- {
- base.OnElementChanged(e);
-
- ArrangeNativeChildren = true;
-
- if (m_Canvas != null)
- Children.Remove(m_Canvas);
-
- m_Canvas = new Canvas()
- {
- Width = 200,
- Height = 200,
- Background = new SolidColorBrush(global::Windows.UI.Color.FromArgb(0, 255, 255, 255)),
- IsHitTestVisible = false
- };
-
- Children.Add(m_Canvas);
-
- //ellipse
- Shape ellipse = new Ellipse()
- {
- Width = 100,
- Height = 100,
- Fill = new SolidColorBrush(global::Windows.UI.Color.FromArgb(255, 255, 0, 0)),
-
- };
- Canvas.SetLeft(ellipse, 0);
- Canvas.SetTop(ellipse, 0);
- m_Canvas.Children.Add(ellipse);
-
- //text
- TextBlock text = new TextBlock()
- {
- FontSize = 50,
- FontWeight = global::Windows.UI.Text.FontWeights.Normal,
- Text = "hello world",
- Foreground = new SolidColorBrush(global::Windows.UI.Color.FromArgb(255, 255, 0, 0))
- };
- Canvas.SetLeft(text, 0);
- Canvas.SetTop(text, 150);
- m_Canvas.Children.Add(text);
- }
- }
-}
+++ /dev/null
-<winRt:WindowsPhonePage
- x:Class="Xamarin.Forms.ControlGallery.WindowsPhone.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.ControlGallery.WindowsPhone"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:winRt="using:Xamarin.Forms.Platform.WinRT"
- mc:Ignorable="d">
-
-</winRt:WindowsPhonePage>
+++ /dev/null
-using System;
-using Windows.Foundation;
-using Windows.Graphics.Display;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Xamarin.Forms.Controls;
-using WControls = Windows.UI.Xaml.Controls;
-using Xamarin.Forms.Platform.WinRT;
-
-// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=391641
-
-namespace Xamarin.Forms.ControlGallery.WindowsPhone
-{
- /// <summary>
- /// An empty page that can be used on its own or navigated to within a Frame.
- /// </summary>
- public sealed partial class MainPage
- {
- public MainPage ()
- {
- InitializeComponent ();
-
- var app = new Controls.App ();
-
- // When the native control gallery loads up, it'll let us know so we can add the nested native controls
- MessagingCenter.Subscribe<NestedNativeControlGalleryPage>(this, NestedNativeControlGalleryPage.ReadyForNativeControlsMessage, AddNativeControls);
-
- LoadApplication (app);
- }
-
- void AddNativeControls (NestedNativeControlGalleryPage page)
- {
- if (page.NativeControlsAdded) {
- return;
- }
-
- StackLayout sl = page.Layout;
-
- // Create and add a native TextBlock
- var originalText = "I am a native TextBlock";
- var textBlock = new TextBlock {
- Text = originalText,
- FontSize = 14,
- FontFamily = new FontFamily ("HelveticaNeue")
- };
-
- sl?.Children.Add (textBlock);
-
- // Create and add a native Button
- var button = new WControls.Button { Content = "Click to toggle font size", Height = 80 };
- button.Click += (sender, args) => { textBlock.FontSize = textBlock.FontSize == 14 ? 24 : 14; };
-
- sl?.Children.Add (button.ToView ());
-
- // Create a control which we know doesn't behave correctly with regard to measurement
- var difficultControl = new BrokenNativeControl {
- Text = "Not Sized/Arranged Properly"
- };
-
- var difficultControl2 = new BrokenNativeControl {
- Text = "Fixed"
- };
-
- // Add the misbehaving controls, one with a custom delegate for ArrangeOverrideDelegate
- sl?.Children.Add (difficultControl);
- sl?.Children.Add (difficultControl2,
- arrangeOverrideDelegate: (renderer, finalSize) => {
- if (finalSize.Width <= 0 || double.IsInfinity (finalSize.Width)) {
- return null;
- }
-
- FrameworkElement frameworkElement = renderer.Control;
-
- frameworkElement.Measure (finalSize);
-
- // The broken control tries sizes itself to be the width of the screen
- var wrongSize = Window.Current.Bounds.Width * (int)DisplayProperties.ResolutionScale / 100;
-
- // The broken control always sizes itself to be 600 wide
- // We can re-center it by offsetting it during the Arrange call
- double diff = Math.Abs(finalSize.Width - wrongSize) / -2;
- frameworkElement.Arrange (new Rect (diff, 0, finalSize.Width - diff, finalSize.Height));
-
- // Arranging the control to the left will make it show up past the edge of the master page
- // We can fix that by clipping it manually
- var clip = new RectangleGeometry { Rect = new Rect (-diff, 0, finalSize.Width, finalSize.Height) };
- frameworkElement.Clip = clip;
-
- return finalSize;
- }
- );
-
- page.NativeControlsAdded = true;
- }
-
- }
-}
+++ /dev/null
-<?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="7d1da7bc-9b18-4581-9184-6b674b7a3dbe" Publisher="CN=Eric" Version="1.0.0.0" />
- <mp:PhoneIdentity PhoneProductId="7d1da7bc-9b18-4581-9184-6b674b7a3dbe" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
- <Properties>
- <DisplayName>Xamarin.Forms.ControlGallery.WindowsPhone</DisplayName>
- <PublisherDisplayName>Eric</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="Xamarin.Forms.ControlGallery.WindowsPhone.App">
- <m3:VisualElements DisplayName="Xamarin.Forms.ControlGallery.WindowsPhone" Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\SmallLogo.png" Description="Xamarin.Forms.ControlGallery.WindowsPhone" 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" />
- </Capabilities>
-</Package>
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using Xamarin.Forms.ControlGallery.WinRT;
-using Xamarin.Forms.Controls;
-using Xamarin.Forms.Platform.WinRT;
-
-// 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("Xamarin.Forms.ControlGallery.WindowsPhone")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Xamarin.Forms.ControlGallery.WindowsPhone")]
-[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)]
-
-// Deliberately broken image source and handler so we can test handling of image loading errors
-[assembly: ExportImageSourceHandler(typeof(FailImageSource), typeof(BrokenImageSourceHandler))]
\ No newline at end of file
+++ /dev/null
-<?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>{8CDEC974-E6BE-4424-BC77-0B87400A08AF}</ProjectGuid>
- <OutputType>AppContainerExe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.ControlGallery.WindowsPhone</RootNamespace>
- <AssemblyName>Xamarin.Forms.ControlGallery.WindowsPhone</AssemblyName>
- <DefaultLanguage>en-US</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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0618</NoWarn>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0618</NoWarn>
- </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>0618</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
- <OutputPath>bin\ARM\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>0618</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>0618</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
- <OutputPath>bin\x86\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>0618</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj">
- <Project>{cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1}</Project>
- <Name>Xamarin.Forms.Controls</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps.WinRT.Phone\Xamarin.Forms.Maps.WinRT.Phone.csproj">
- <Project>{2633af57-f2cb-442a-ac19-f97bd8a06571}</Project>
- <Name>Xamarin.Forms.Maps.WinRT.Phone</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT.Phone\Xamarin.Forms.Platform.WinRT.Phone.csproj">
- <Project>{3361d52c-2e74-433e-8285-9c9a5c485977}</Project>
- <Name>Xamarin.Forms.Platform.WinRT.Phone</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.ControlGallery.Windows\BrokenImageSourceHandler.cs">
- <Link>BrokenImageSourceHandler.cs</Link>
- </Compile>
- <Compile Include="App.xaml.cs">
- <DependentUpon>App.xaml</DependentUpon>
- </Compile>
- <Compile Include="BrokenNativeControl.cs" />
- <Compile Include="CustomRenderers.cs" />
- <Compile Include="MainPage.xaml.cs">
- <DependentUpon>MainPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="StringProvider.cs" />
- </ItemGroup>
- <ItemGroup>
- <AppxManifest Include="Package.appxmanifest">
- <SubType>Designer</SubType>
- </AppxManifest>
- </ItemGroup>
- <ItemGroup>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\bank.png">
- <Link>bank.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1.jpg">
- <Link>cover1.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1small.jpg">
- <Link>cover1small.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimson.jpg">
- <Link>crimson.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimsonsmall.jpg">
- <Link>crimsonsmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\menuIcon.png">
- <Link>menuIcon.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasis.jpg">
- <Link>oasis.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasissmall.jpg">
- <Link>oasissmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\photo.jpg">
- <Link>photo.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\seth.png">
- <Link>seth.png</Link>
- </Content>
- <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="coffee.png" />
- <Content Include="default.css" />
- <Content Include="local.html" />
- <Content Include="toolbar_close.png" />
- <Content Include="WebImages\XamarinLogo.png" />
- </ItemGroup>
- <ItemGroup>
- <ApplicationDefinition Include="App.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </ApplicationDefinition>
- <Page Include="MainPage.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- </ItemGroup>
- <ItemGroup>
- <None Include="app.config" />
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '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" />
- <Import Project="$(XamlSpyInstallPath)MSBuild\FirstFloor.XamlSpy.WindowsPhone.targets" Condition="'$(XamlSpyInstallPath)' != '' and '$(Configuration)' == 'DEBUG'" />
- <!-- 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
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="Mono.Cecil" publicKeyToken="0738eb9f132ed756" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-0.9.6.0" newVersion="0.9.6.0" />
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
-</configuration>
\ No newline at end of file
+++ /dev/null
-html,body{margin:0;padding:10}
-body,p,h1{font-family:Chalkduster;font-style: italic;}
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<link rel="stylesheet" href="default.css">
-</head>
-<body>
-<h1>Xamarin.Forms</h1>
-<p>This is a local HTML page</p>
-
-</body>
-</html>
\ No newline at end of file
using Xamarin.Forms.Controls.Issues;
using WImageSource = Windows.UI.Xaml.Media.ImageSource;
-#if WINDOWS_UWP
using Xamarin.Forms.Platform.UWP;
using Xamarin.Forms.ControlGallery.WindowsUniversal;
[assembly: ExportRenderer(typeof(_51173Image), typeof(_51173CustomImageRenderer))]
namespace Xamarin.Forms.ControlGallery.WindowsUniversal
-#else
-using Xamarin.Forms.Platform.WinRT;
-using Xamarin.Forms.ControlGallery.WinRT;
-
-[assembly: ExportRenderer(typeof(_51173Image), typeof(_51173CustomImageRenderer))]
-namespace Xamarin.Forms.ControlGallery.WinRT
-#endif
{
public sealed class BrokenImageSourceHandler : IImageSourceHandler
{
using Xamarin.Forms;
-using Xamarin.Forms.ControlGallery.Windows;
+using Xamarin.Forms.ControlGallery.WindowsUniversal;
using Xamarin.Forms.Controls;
[assembly: Dependency (typeof (StringProvider))]
-namespace Xamarin.Forms.ControlGallery.Windows
+namespace Xamarin.Forms.ControlGallery.WindowsUniversal
{
public class StringProvider : IStringProvider
{
<Compile Include="_58406EffectRenderer.cs" />
<Compile Include="_60122ImageRenderer.cs" />
<Content Include="Assets\Fonts\OFL.txt" />
+ <Content Include="bank.png" />
<Content Include="coffee.png" />
+ <Content Include="cover1.jpg" />
+ <Content Include="cover1small.jpg" />
+ <Content Include="crimsonsmall.jpg" />
<Content Include="default.css" />
<Content Include="invalidimage.jpg" />
<Content Include="local.html" />
<Content Include="test.jpg" />
+ <Content Include="oasis.jpg" />
+ <Content Include="oasissmall.jpg" />
+ <Content Include="photo.jpg" />
+ <Content Include="seth.png" />
<Content Include="toolbar_close.png" />
<Content Include="WebImages\XamarinLogo.png" />
<Content Include="Assets\Fonts\Lobster-Regular.ttf" />
<None Include="project.json" />
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\bank.png">
- <Link>bank.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1.jpg">
- <Link>cover1.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\cover1small.jpg">
- <Link>cover1small.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimson.jpg">
- <Link>crimson.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\crimsonsmall.jpg">
- <Link>crimsonsmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\menuIcon.png">
- <Link>menuIcon.png</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasis.jpg">
- <Link>oasis.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\oasissmall.jpg">
- <Link>oasissmall.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\photo.jpg">
- <Link>photo.jpg</Link>
- </Content>
- <Content Include="..\Xamarin.Forms.ControlGallery.WP8\seth.png">
- <Link>seth.png</Link>
- </Content>
<Content Include="Properties\default.rd.xml" />
- <Compile Include="..\Xamarin.Forms.ControlGallery.Windows\BrokenImageSourceHandler.cs">
- <Link>BrokenImageSourceHandler.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.ControlGallery.Windows\StringProvider.cs">
- <Link>StringProvider.cs</Link>
- </Compile>
+ <Compile Include="BrokenImageSourceHandler.cs" />
+ <Compile Include="StringProvider.cs" />
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
case Device.Android:
_prefix = "";
break;
- case Device.WinRT:
case Device.UWP:
- case Device.WinPhone:
_prefix = "Assets/";
break;
}
{
protected override void Init ()
{
- if (Device.RuntimePlatform == Device.UWP || Device.RuntimePlatform == Device.WinRT)
+ if (Device.RuntimePlatform == Device.UWP)
MasterBehavior = MasterBehavior.Split;
else
MasterBehavior = MasterBehavior.SplitOnLandscape;
default:
smallImage = "coffee.png";
break;
- case Device.WinPhone:
- case Device.WinRT:
case Device.UWP:
smallImage = "bank.png";
break;
layout.Children.Add(new ScrollView {
BackgroundColor = Color.Aqua,
Orientation = ScrollOrientation.Horizontal,
- HeightRequest = Device.RuntimePlatform == Device.WinRT || Device.RuntimePlatform == Device.UWP || Device.RuntimePlatform == Device.WinPhone ? 80 : 44,
+ HeightRequest = Device.RuntimePlatform == Device.UWP ? 80 : 44,
Content = buttonStack
});
imageInstructions = $"The following Image should read aloud \"{ImageName}. {ImageHelpText}\". You should be able to tap the image and hear an alert box.";
boxInstructions = $"The following Box should read aloud \"{BoxName}. {BoxHelpText}\". You should be able to tap the box and hear an alert box.";
break;
- case Device.WinRT:
case Device.UWP:
- case Device.WinPhone:
screenReader = "Narrator";
scrollFingers = "two fingers";
explore = "Use three fingers to swipe up the screen to read all of the elements on this page.";
case Device.Android:
fontName = "sans-serif-light";
break;
- case Device.WinPhone:
- case Device.WinRT:
case Device.UWP:
fontName = "Comic Sans MS";
break;
var frame = new Frame {
Content = _stack,
- BackgroundColor = new[] { Device.Android, Device.WinRT, Device.UWP, Device.WinPhone }.Contains(Device.RuntimePlatform) ? new Color(0.2) : new Color(1)
+ BackgroundColor = new[] { Device.Android, Device.UWP }.Contains(Device.RuntimePlatform) ? new Color(0.2) : new Color(1)
};
_timeLabel = new Label {
Text = text
Content = new Button {
Text = "Framous!"
},
- BackgroundColor = new[] { Device.Android, Device.WinRT, Device.UWP, Device.WinPhone }.Contains(Device.RuntimePlatform) ? new Color(0) : new Color(1),
+ BackgroundColor = new[] { Device.Android, Device.UWP }.Contains(Device.RuntimePlatform) ? new Color(0) : new Color(1),
VerticalOptions = LayoutOptions.FillAndExpand
};
case Device.Android:
fontName = "sans-serif-light";
break;
- case Device.WinPhone:
- case Device.WinRT:
case Device.UWP:
fontName = "Comic Sans MS";
break;
default:
page.Title = "Test Cases";
break;
- case Device.WinPhone:
case Device.UWP:
- case Device.WinRT:
page.Title = "Tests";
break;
}
[TestCase (Device.Android, ListViewCachingStrategy.RecycleElement)]
[TestCase (Device.iOS, ListViewCachingStrategy.RecycleElement)]
- [TestCase (Device.WinRT, ListViewCachingStrategy.RetainElement)]
[TestCase(Device.UWP, ListViewCachingStrategy.RetainElement)]
[TestCase ("Other", ListViewCachingStrategy.RetainElement)]
- [TestCase (Device.WinPhone, ListViewCachingStrategy.RetainElement)]
public void EnforcesCachingStrategy (string platform, ListViewCachingStrategy expected)
{
var oldOS = Device.RuntimePlatform;
using System.Text;
using Xamarin.Forms.Internals;
-#if WINDOWS_PHONE
-using Xamarin.Forms.Platform.WinPhone;
-#endif
-
[assembly:Dependency (typeof(MockDeserializer))]
[assembly:Dependency (typeof(MockResourcesProvider))]
public IIsolatedStorageFile GetUserStoreForApplication ()
{
-#if WINDOWS_PHONE
- return new MockIsolatedStorageFile (IsolatedStorageFile.GetUserStoreForApplication ());
-#else
return new MockIsolatedStorageFile (IsolatedStorageFile.GetUserStoreForAssembly ());
-#endif
}
public class MockIsolatedStorageFile : IIsolatedStorageFile
}
[Test]
- public void TestOnPlatformWinPhone ()
- {
- var view = new View ();
-
- bool ios = false;
- bool android = false;
- bool winphone = false;
-
- ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.WinPhone;
-
- Device.OnPlatform (
- iOS: () => ios = true,
- Android: () => android = true,
- WinPhone: () => winphone = true);
-
- Assert.False (ios);
- Assert.False (android);
- Assert.True (winphone);
- }
-
- [Test]
public void TestOnPlatformDefault ()
{
var view = new View ();
}
[Test]
- public void TestDefaultOnWinPhone ()
- {
- bool defaultExecuted = false;
-
- ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.WinPhone;
-
- Device.OnPlatform (
- iOS: () => { },
- Android: () => { },
- Default:() => defaultExecuted = true);
-
- Assert.True (defaultExecuted);
- }
-
- [Test]
public void TestDefaultOnOther ()
{
bool defaultExecuted = false;
[Test]
public void TestOnPlatformGeneric ()
{
- ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.WinPhone;
- Assert.AreEqual (3, Device.OnPlatform (1, 2, 3));
-
((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.iOS;
Assert.AreEqual (1, Device.OnPlatform (1, 2, 3));
{
public const string iOS = "iOS";
public const string Android = "Android";
- public const string WinPhone = "WinPhone";
public const string UWP = "UWP";
- public const string WinRT = "WinRT";
public const string macOS = "macOS";
public const string GTK = "GTK";
return platform;
// In the old TargetPlatform, there was no distinction between WinRT/UWP
- if (RuntimePlatform == UWP || RuntimePlatform == WinRT)
+ if (RuntimePlatform == UWP)
{
return TargetPlatform.Windows;
}
using System.Reflection;
using System.Runtime.CompilerServices;
-using Xamarin.Forms;
using Xamarin.Forms.Internals;
[assembly: AssemblyTitle("Xamarin.Forms.Core")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The Page "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-//[assembly: AssemblyVersion("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.iOS")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.iOS.Classic")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.Android")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.UAP")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WinRT")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WinRT.Tablet")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WinRT.Phone")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WP8")]
-//[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.macOS")]
[assembly: InternalsVisibleTo("iOSUnitTests")]
[assembly: InternalsVisibleTo("Xamarin.Forms.Controls")]
[assembly: InternalsVisibleTo("Xamarin.Forms.Core.Design")]
void OnProxyCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
- OnProxyCollectionChanged(sender, e, true);
- }
-
- void OnProxyCollectionChanged(object sender, NotifyCollectionChangedEventArgs e, bool fixWindows = true)
- {
if (IsGroupingEnabled)
{
OnCollectionChangedGrouped(e);
return;
}
- /* HACKAHACKHACK: LongListSelector on WP SL has a bug in that it completely fails to deal with
- * INCC notifications that include more than 1 item. */
- if (fixWindows && Device.RuntimePlatform == Device.WinPhone)
- {
- SplitCollectionChangedItems(e);
- return;
- }
-
int count = Count;
var ex = e as NotifyCollectionChangedEventArgsEx;
if (ex != null)
goto default;
for (var i = 0; i < e.NewItems.Count; i++)
- OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, e.NewItems[i], e.NewStartingIndex + i), false);
+ OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, e.NewItems[i], e.NewStartingIndex + i));
break;
goto default;
for (var i = 0; i < e.OldItems.Count; i++)
- OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, e.OldItems[i], e.OldStartingIndex + i), false);
+ OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, e.OldItems[i], e.OldStartingIndex + i));
break;
goto default;
for (var i = 0; i < e.OldItems.Count; i++)
- OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, e.NewItems[i], e.OldItems[i], e.OldStartingIndex + i), false);
+ OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, e.NewItems[i], e.OldItems[i], e.OldStartingIndex + i));
break;
default:
- OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset), false);
+ OnProxyCollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
break;
}
}
-#if WINDOWS_UWP
-using Xamarin.Forms.Maps.UWP;
-
-#else
-using Xamarin.Forms.Maps.WinRT;
-
-#endif
+using Xamarin.Forms.Maps.UWP;
namespace Xamarin
{
using Windows.Devices.Geolocation;
using Windows.Services.Maps;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Maps.UWP
-#else
-
-namespace Xamarin.Forms.Maps.WinRT
-#endif
{
internal class GeocoderBackend
{
using Windows.UI.Xaml.Controls.Maps;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes;
-#if WINDOWS_UWP
using Xamarin.Forms.Platform.UWP;
-#else
-using Xamarin.Forms.Platform.WinRT;
-
-#endif
-
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Maps.UWP
-#else
-
-namespace Xamarin.Forms.Maps.WinRT
-#endif
{
public class MapRenderer : ViewRenderer<Map, MapControl>
{
}
}
-#if WINDOWS_UWP
void UpdateHasZoomEnabled()
{
Control.ZoomInteractionMode = Element.HasZoomEnabled
{
Control.PanInteractionMode = Element.HasScrollEnabled ? MapPanInteractionMode.Auto : MapPanInteractionMode.Disabled;
}
-#else
- void UpdateHasZoomEnabled()
- {
- }
-
- void UpdateHasScrollEnabled()
- {
- }
-#endif
}
}
using Windows.UI.Xaml.Controls.Maps;
using Windows.UI.Xaml.Input;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Maps.UWP
-#else
-
-namespace Xamarin.Forms.Maps.WinRT
-#endif
{
internal class PushPin : ContentControl
{
+++ /dev/null
-using Xamarin.Forms.Maps.WP8;
-
-namespace Xamarin
-{
- public static class FormsMaps
- {
- static bool s_isInitialized;
-
- internal static string ApplicationId { get; set; }
-
- internal static string AuthenticationToken { get; set; }
-
- public static void Init()
- {
- if (s_isInitialized)
- return;
- GeocoderBackend.Register();
- s_isInitialized = true;
- }
-
- public static void Init(string applicationId, string authenticationToken)
- {
- ApplicationId = applicationId;
- AuthenticationToken = authenticationToken;
-
- Init();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Device.Location;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.Phone.Maps.Services;
-
-namespace Xamarin.Forms.Maps.WP8
-{
- internal class GeocoderBackend
- {
- // Eventually this should be sanely set to match either where the map is centered or where the user is.
- internal static Position PositionForGeocoding { get; set; }
-
- public static void Register()
- {
- Geocoder.GetPositionsForAddressAsyncFunc = GetPositionsForAddress;
- Geocoder.GetAddressesForPositionFuncAsync = GetAddressesForPositionAsync;
- }
-
- // Thank you to craig dunn
- static string AddressToString(MapAddress address)
- {
- string building = "", house = "", city = "", country = "";
-
- var bldg = new List<string>();
- if (!"".Equals(address.BuildingRoom))
- bldg.Add(address.BuildingRoom);
- if (!"".Equals(address.BuildingFloor))
- bldg.Add(address.BuildingFloor);
- if (!"".Equals(address.BuildingName))
- bldg.Add(address.BuildingName);
- if (!"".Equals(address.BuildingZone))
- bldg.Add(address.BuildingZone);
- if (bldg.Count > 0)
- building = string.Join(" ", bldg) + Environment.NewLine;
-
- var hs = new List<string>();
- if (!"".Equals(address.HouseNumber))
- hs.Add(address.HouseNumber);
- if (!"".Equals(address.Street))
- hs.Add(address.Street);
- if (hs.Count > 0)
- house = string.Join(" ", hs) + Environment.NewLine;
-
- var cs = new List<string>();
- if (!"".Equals(address.City))
- cs.Add(address.City);
- if (!"".Equals(address.State))
- cs.Add(address.State);
- else if (!"".Equals(address.Province))
- cs.Add(address.Province);
- if (!"".Equals(address.PostalCode))
- cs.Add(address.PostalCode);
- if (cs.Count > 0)
- city = string.Join(" ", cs) + Environment.NewLine;
-
- if (!"".Equals(address.Country))
- country = address.Country;
- return building + house + city + country;
- }
-
- static Task<IEnumerable<string>> GetAddressesForPositionAsync(Position position)
- {
- var source = new TaskCompletionSource<IEnumerable<string>>();
-
- var query = new ReverseGeocodeQuery
- {
- GeoCoordinate = new GeoCoordinate(position.Latitude, position.Longitude)
- };
- query.QueryCompleted +=
- (sender, args) => source.SetResult(args.Result.Select(r => AddressToString(r.Information.Address)).ToArray());
- query.QueryAsync();
-
- return source.Task;
- }
-
- static Task<IEnumerable<Position>> GetPositionsForAddress(string s)
- {
- var source = new TaskCompletionSource<IEnumerable<Position>>();
- var query = new GeocodeQuery
- {
- SearchTerm = s,
- GeoCoordinate = new GeoCoordinate(PositionForGeocoding.Latitude, PositionForGeocoding.Longitude)
- };
- query.QueryCompleted +=
- (sender, args) =>
- source.SetResult(
- args.Result.Select(r => new Position(r.GeoCoordinate.Latitude, r.GeoCoordinate.Longitude)).ToArray());
- query.QueryAsync();
-
- return source.Task;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Device.Location;
-using System.Linq;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Shapes;
-using Windows.Devices.Geolocation;
-using Microsoft.Phone.Maps;
-using Microsoft.Phone.Maps.Controls;
-using Microsoft.Phone.Maps.Toolkit;
-using Xamarin.Forms.Platform.WinPhone;
-
-namespace Xamarin.Forms.Maps.WP8
-{
- public class
- MapRenderer : ViewRenderer<Map, Microsoft.Phone.Maps.Controls.Map>
- {
- bool _firstZoomLevelChangeFired;
- MapLayer _pushPinLayer;
- MapLayer _userLocationLayer;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
- {
- base.OnElementChanged(e);
-
- SetNativeControl(new Microsoft.Phone.Maps.Controls.Map());
- UpdateMapType();
-
- Control.Loaded += ControlOnLoaded;
-
- _pushPinLayer = new MapLayer();
- Control.Layers.Add(_pushPinLayer);
-
- _userLocationLayer = new MapLayer();
- Control.Layers.Add(_userLocationLayer);
-
- Control.ViewChanged += (s, a) => UpdateVisibleRegion();
- Control.ZoomLevelChanged += (sender, args) => UpdateVisibleRegion();
- Control.CenterChanged += (s, a) => UpdateVisibleRegion();
- //Control.ViewChangeOnFrame += (s, a) => UpdateVisibleRegion ();
-
- MessagingCenter.Subscribe<Map, MapSpan>(this, "MapMoveToRegion", (s, a) => MoveToRegion(a), Element);
-
- ((ObservableCollection<Pin>)Element.Pins).CollectionChanged += OnCollectionChanged;
-
- if (Element.Pins.Any())
- LoadPins();
-
- UpdateShowUserLocation();
- }
-
- async void UpdateShowUserLocation()
- {
- if (Element.IsShowingUser)
- {
- var myGeolocator = new Geolocator();
-
- if (myGeolocator.LocationStatus != PositionStatus.NotAvailable &&
- myGeolocator.LocationStatus != PositionStatus.Disabled)
- {
- var userPosition = await myGeolocator.GetGeopositionAsync();
- if (userPosition?.Coordinate != null)
- LoadUserPosition(userPosition.Coordinate, true);
- }
- }
- else if (_userLocationLayer.Count > 0)
- _userLocationLayer.Clear();
- }
-
- void ControlOnLoaded(object sender, RoutedEventArgs routedEventArgs)
- {
- MapsSettings.ApplicationContext.ApplicationId = FormsMaps.ApplicationId;
- MapsSettings.ApplicationContext.AuthenticationToken = FormsMaps.AuthenticationToken;
- }
-
- void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- switch (e.Action)
- {
- case NotifyCollectionChangedAction.Add:
- foreach (Pin pin in e.NewItems)
- LoadPin(pin);
- break;
- case NotifyCollectionChangedAction.Move:
- // no matter
- break;
- case NotifyCollectionChangedAction.Remove:
- foreach (Pin pin in e.OldItems)
- RemovePin(pin);
- break;
- case NotifyCollectionChangedAction.Replace:
- foreach (Pin pin in e.OldItems)
- RemovePin(pin);
- foreach (Pin pin in e.NewItems)
- LoadPin(pin);
- break;
- case NotifyCollectionChangedAction.Reset:
- _pushPinLayer.Clear();
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
-
- void UpdateVisibleRegion()
- {
- if (!_firstZoomLevelChangeFired)
- {
- MoveToRegion(Element.LastMoveToRegion, MapAnimationKind.None);
- _firstZoomLevelChangeFired = true;
- return;
- }
-
- var center = new Position(Control.Center.Latitude, Control.Center.Longitude);
- var topLeft = Control.ConvertViewportPointToGeoCoordinate(new System.Windows.Point(0, 0));
- var bottomRight =
- Control.ConvertViewportPointToGeoCoordinate(new System.Windows.Point(Control.ActualWidth, Control.ActualHeight));
- if (topLeft == null || bottomRight == null)
- return;
-
- var boundingRegion = LocationRectangle.CreateBoundingRectangle(topLeft, bottomRight);
- var result = new MapSpan(center, boundingRegion.HeightInDegrees, boundingRegion.WidthInDegrees);
- Element.SetVisibleRegion(result);
- }
-
- void LoadPins()
- {
- foreach (var pin in Element.Pins)
- LoadPin(pin);
- }
-
- void LoadPin(Pin pin)
- {
- var location = new GeoCoordinate(pin.Position.Latitude, pin.Position.Longitude);
- var pushPin = new Pushpin
- {
- Content = pin.Label,
- PositionOrigin = new System.Windows.Point(0, 1),
- Tag = pin
- };
-
- pushPin.Tap += PinTap;
-
- var pushPinOverlay = new MapOverlay
- {
- Content = pushPin,
- GeoCoordinate = location,
- PositionOrigin = new System.Windows.Point(0, 1)
- };
- _pushPinLayer.Add(pushPinOverlay);
- }
-
- void PinTap(object sender, GestureEventArgs e)
- {
- var pushPin = (Pushpin)sender;
- var pin = (Pin)pushPin.Tag;
- pin.SendTap();
- }
-
- void RemovePin(Pin pin)
- {
- var child = _pushPinLayer.FirstOrDefault(p => ((Pushpin)p.Content).Tag == (object)pin);
- if (child != null)
- _pushPinLayer.Remove(child);
- }
-
- void MoveToRegion(MapSpan span, MapAnimationKind animation = MapAnimationKind.Parabolic)
- {
- // FIXME
- var center = new GeoCoordinate(span.Center.Latitude, span.Center.Longitude);
- var location = new LocationRectangle(center, span.LongitudeDegrees, span.LatitudeDegrees);
- Control.SetView(location, animation);
- }
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- return new SizeRequest(new Size(100, 100));
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Map.MapTypeProperty.PropertyName)
- UpdateMapType();
- if (e.PropertyName == Map.IsShowingUserProperty.PropertyName)
- UpdateShowUserLocation();
- }
-
- void UpdateMapType()
- {
- switch (Element.MapType)
- {
- case MapType.Street:
- Control.CartographicMode = MapCartographicMode.Road;
- break;
- case MapType.Satellite:
- Control.CartographicMode = MapCartographicMode.Aerial;
- break;
- case MapType.Hybrid:
- Control.CartographicMode = MapCartographicMode.Hybrid;
- break;
- }
- }
-
- void LoadUserPosition(Geocoordinate userPosition, bool center = false)
- {
- _userLocationLayer.Clear();
-
- var userCoordinate = new GeoCoordinate
- (
- userPosition.Latitude,
- userPosition.Longitude,
- userPosition.Altitude ?? double.NaN,
- userPosition.Accuracy,
- userPosition.AltitudeAccuracy ?? double.NaN,
- userPosition.Speed ?? double.NaN,
- userPosition.Heading ?? double.NaN
- );
-
- //make some preety?
- var userPositionCircle = new Ellipse
- {
- Fill = new SolidColorBrush(Colors.Blue),
- Height = 20,
- Width = 20,
- Opacity = 50
- };
-
- var userPostionOverlay = new MapOverlay
- {
- Content = userPositionCircle,
- PositionOrigin = new System.Windows.Point(0.5, 0.5),
- GeoCoordinate = userCoordinate
- };
-
- _userLocationLayer.Add(userPostionOverlay);
-
- if (center)
- {
- Control.Center = userCoordinate;
- Control.ZoomLevel = 13;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using System.Resources;
-using System.Runtime.InteropServices;
-using Xamarin.Forms;
-using Xamarin.Forms.Maps;
-using Xamarin.Forms.Maps.WP8;
-// 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("Xamarin.Forms.Maps.WP8")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[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("9222d2b8-63a4-4a36-a80e-bc34f27e0951")]
-[assembly: NeutralResourcesLanguage("en-US")]
-[assembly: ExportRenderer(typeof (Map), typeof (MapRenderer))]
\ No newline at end of file
+++ /dev/null
-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.
+++ /dev/null
-<?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)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.20506</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{9222D2B8-63A4-4A36-A80E-BC34F27E0951}</ProjectGuid>
- <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Maps.WP8</RootNamespace>
- <AssemblyName>Xamarin.Forms.Maps.WP8</AssemblyName>
- <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
- <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
- <SilverlightApplication>false</SilverlightApplication>
- <ValidateXaml>true</ValidateXaml>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
- <RestorePackages>true</RestorePackages>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </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>
- <NoWarn>0252</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0252</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0252</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0252</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
- <Link>Properties\GlobalAssemblyInfo.cs</Link>
- </Compile>
- <Compile Include="MapRenderer.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="FormsMaps.cs" />
- <Compile Include="GeocoderBackend.cs" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7D13BAC2-C6A4-416A-B07E-C169B199E52B}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8.csproj">
- <Project>{517B6AE0-792B-4665-9376-5CA33E539181}</Project>
- <Name>Xamarin.Forms.Platform.WP8</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <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>
- <Reference Include="Microsoft.Phone.Controls.Toolkit">
- <HintPath>..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
- </Reference>
- </ItemGroup>
- <ItemGroup>
- <None Include="packages.config" />
- </ItemGroup>
- <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
- <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
- <ProjectExtensions />
- <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.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>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
-</packages>
+++ /dev/null
-using System.Reflection;
-using System.Runtime.InteropServices;
-using Xamarin.Forms.Maps;
-using Xamarin.Forms.Maps.WinRT;
-using Xamarin.Forms.Platform.WinRT;
-
-// 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("Xamarin.Forms.Maps.WinRT.Phone")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-
-// 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)]
-[assembly: ExportRenderer(typeof (Map), typeof (MapRenderer))]
\ No newline at end of file
+++ /dev/null
-<?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>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{2633AF57-F2CB-442A-AC19-F97BD8A06571}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Maps.WinRT</RootNamespace>
- <AssemblyName>Xamarin.Forms.Maps.WinRT.Phone</AssemblyName>
- <DefaultLanguage>en-US</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' ">
- <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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </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>4014</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
- <OutputPath>bin\ARM\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>4014</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>4014</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
- <OutputPath>bin\x86\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>4014</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT.Phone\Xamarin.Forms.Platform.WinRT.Phone.csproj">
- <Project>{3361d52c-2e74-433e-8285-9c9a5c485977}</Project>
- <Name>Xamarin.Forms.Platform.WinRT.Phone</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Maps.UWP\FormsMaps.cs">
- <Link>FormsMaps.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Maps.UWP\GeocoderBackend.cs">
- <Link>GeocoderBackend.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Maps.UWP\MapRenderer.cs">
- <Link>MapRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Maps.UWP\PushPin.cs">
- <Link>PushPin.cs</Link>
- </Compile>
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '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
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using Bing.Maps;
-using Bing.Maps.Search;
-
-namespace Xamarin.Forms.Maps.WinRT
-{
- internal class GeocoderBackend
- {
- public static void Register()
- {
- Geocoder.GetPositionsForAddressAsyncFunc = GetPositionsForAddress;
- Geocoder.GetAddressesForPositionFuncAsync = GetAddressesForPositionAsync;
- }
-
- static async Task<IEnumerable<string>> GetAddressesForPositionAsync(Position position)
- {
- var results = new List<string>();
- var source = new TaskCompletionSource<IEnumerable<string>>();
- var requestOptions = new ReverseGeocodeRequestOptions(new Location(position.Latitude, position.Longitude));
- var response =
- await
- new Bing.Maps.Map { Credentials = FormsMaps.AuthenticationToken }.SearchManager.ReverseGeocodeAsync(requestOptions);
- if (!response.HasError)
- {
- foreach (var address in response.LocationData)
- results.Add(address.Address.FormattedAddress);
- }
-
- return results;
- }
-
- static async Task<IEnumerable<Position>> GetPositionsForAddress(string s)
- {
- var results = new List<Position>();
-
- if (string.IsNullOrEmpty(s))
- return results;
-
- var requestOptions = new GeocodeRequestOptions(s);
- var response =
- await new Bing.Maps.Map { Credentials = FormsMaps.AuthenticationToken }.SearchManager.GeocodeAsync(requestOptions);
- if (!response.HasError)
- {
- foreach (var address in response.LocationData)
- results.Add(new Position(address.Location.Latitude, address.Location.Longitude));
- }
- return results;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Linq;
-using System.Threading.Tasks;
-using Windows.Devices.Geolocation;
-using Windows.UI;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Shapes;
-using Bing.Maps;
-using Xamarin.Forms.Platform.WinRT;
-
-namespace Xamarin.Forms.Maps.WinRT
-{
- public class MapRenderer : ViewRenderer<Map, Bing.Maps.Map>
- {
- bool _disposed;
- bool _firstZoomLevelChangeFired;
- Ellipse _userPositionCircle;
-
- protected override async void OnElementChanged(ElementChangedEventArgs<Map> e)
- {
- base.OnElementChanged(e);
-
- if (e.OldElement != null)
- {
- var mapModel = e.OldElement;
- MessagingCenter.Unsubscribe<Map, MapSpan>(this, "MapMoveToRegion");
- ((ObservableCollection<Pin>)mapModel.Pins).CollectionChanged -= OnCollectionChanged;
- }
-
- if (e.NewElement != null)
- {
- var mapModel = e.NewElement;
-
- if (Control == null)
- {
- SetNativeControl(new Bing.Maps.Map());
- Control.Credentials = FormsMaps.AuthenticationToken;
- Control.ViewChanged += (s, a) => UpdateVisibleRegion();
- }
-
- MessagingCenter.Subscribe<Map, MapSpan>(this, "MapMoveToRegion", (s, a) => MoveToRegion(a), mapModel);
-
- UpdateMapType();
- UpdateHasScrollEnabled();
- UpdateHasZoomEnabled();
-
- ((ObservableCollection<Pin>)mapModel.Pins).CollectionChanged += OnCollectionChanged;
-
- if (mapModel.Pins.Any())
- LoadPins();
-
- await UpdateIsShowingUser();
- }
- }
-
- protected override async void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Map.MapTypeProperty.PropertyName)
- UpdateMapType();
- else if (e.PropertyName == Map.IsShowingUserProperty.PropertyName)
- await UpdateIsShowingUser();
- else if (e.PropertyName == Map.HasScrollEnabledProperty.PropertyName)
- UpdateHasScrollEnabled();
- else if (e.PropertyName == Map.HasZoomEnabledProperty.PropertyName)
- UpdateHasZoomEnabled();
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing && !_disposed)
- {
- _disposed = true;
-
- MessagingCenter.Unsubscribe<Map, MapSpan>(this, "MapMoveToRegion");
-
- if (Element != null)
- ((ObservableCollection<Pin>)Element.Pins).CollectionChanged -= OnCollectionChanged;
- }
- base.Dispose(disposing);
- }
-
- async Task UpdateIsShowingUser()
- {
- if (Element.IsShowingUser)
- {
- var myGeolocator = new Geolocator();
- if (myGeolocator.LocationStatus != PositionStatus.NotAvailable &&
- myGeolocator.LocationStatus != PositionStatus.Disabled)
- {
- var userPosition = await myGeolocator.GetGeopositionAsync();
- if (userPosition?.Coordinate != null)
- LoadUserPosition(userPosition.Coordinate, true);
- }
- }
- else if (_userPositionCircle != null && Control.Children.Contains(_userPositionCircle))
- Control.Children.Remove(_userPositionCircle);
- }
-
- void LoadPins()
- {
- foreach (var pin in Element.Pins)
- LoadPin(pin);
- }
-
- void ClearPins()
- {
- Control.Children.Clear();
-#pragma warning disable 4014 // don't wanna block UI thread
- UpdateIsShowingUser();
-#pragma warning restore
- }
-
- void RemovePin(Pin pinToRemove)
- {
- var pushPin = Control.Children.FirstOrDefault(c =>
- {
- var pin = (c as Pushpin);
- return (pin != null && pin.DataContext.Equals(pinToRemove));
- });
-
- if (pushPin != null)
- Control.Children.Remove(pushPin);
- }
-
- void LoadPin(Pin pin)
- {
- var pushPin = new Pushpin { Text = pin.Label, DataContext = pin };
- MapLayer.SetPosition(pushPin, new Location(pin.Position.Latitude, pin.Position.Longitude));
- pushPin.Tapped += (s, e) => ((s as Pushpin)?.DataContext as Pin)?.SendTap();
- Control.Children.Add(pushPin);
- }
-
- void UpdateMapType()
- {
- switch (Element.MapType)
- {
- case MapType.Street:
- Control.MapType = Bing.Maps.MapType.Road;
- break;
- case MapType.Satellite:
- Control.MapType = Bing.Maps.MapType.Aerial;
- break;
- case MapType.Hybrid:
- Control.MapType = Bing.Maps.MapType.Birdseye;
- break;
- }
- }
-
- void MoveToRegion(MapSpan span)
- {
- var center = new Location(span.Center.Latitude, span.Center.Longitude);
- var location = new LocationRect(center, span.LongitudeDegrees, span.LatitudeDegrees);
- Control.SetView(location);
- }
-
- void UpdateVisibleRegion()
- {
- if (Control == null || Element == null)
- return;
-
- if (!_firstZoomLevelChangeFired)
- {
- MoveToRegion(Element.LastMoveToRegion);
- _firstZoomLevelChangeFired = true;
- return;
- }
-
- var center = new Position(Control.Center.Latitude, Control.Center.Longitude);
-
- var boundingRegion = Control.Bounds;
- var result = new MapSpan(center, boundingRegion.Height, boundingRegion.Width);
- Element.SetVisibleRegion(result);
- }
-
- void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- switch (e.Action)
- {
- case NotifyCollectionChangedAction.Add:
- foreach (Pin pin in e.NewItems)
- LoadPin(pin);
- break;
- case NotifyCollectionChangedAction.Move:
- // no matter
- break;
- case NotifyCollectionChangedAction.Remove:
- foreach (Pin pin in e.OldItems)
- RemovePin(pin);
- break;
- case NotifyCollectionChangedAction.Replace:
- foreach (Pin pin in e.OldItems)
- RemovePin(pin);
- foreach (Pin pin in e.NewItems)
- LoadPin(pin);
- break;
- case NotifyCollectionChangedAction.Reset:
- ClearPins();
- break;
- }
- }
-
- void LoadUserPosition(Geocoordinate userCoordinate, bool center)
- {
- var userPosition = new Location
- {
- Latitude = userCoordinate.Point.Position.Latitude,
- Longitude = userCoordinate.Point.Position.Longitude
- };
-
- if (_userPositionCircle == null)
- {
- _userPositionCircle = new Ellipse
- {
- Stroke = new SolidColorBrush(Colors.White),
- Fill = new SolidColorBrush(Colors.Blue),
- StrokeThickness = 2,
- Height = 20,
- Width = 20,
- Opacity = 50
- };
- }
-
- if (Control.Children.Contains(_userPositionCircle))
- Control.Children.Remove(_userPositionCircle);
-
- MapLayer.SetPosition(_userPositionCircle, userPosition);
- MapLayer.SetPositionAnchor(_userPositionCircle, new Windows.Foundation.Point(0.5, 0.5));
-
- Control.Children.Add(_userPositionCircle);
-
- if (center)
- {
- Control.Center = userPosition;
- Control.ZoomLevel = 13;
- }
- }
-
- void UpdateHasZoomEnabled()
- {
- }
-
- void UpdateHasScrollEnabled()
- {
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using System.Runtime.InteropServices;
-using Xamarin.Forms.Maps;
-using Xamarin.Forms.Maps.WinRT;
-using Xamarin.Forms.Platform.WinRT;
-
-// 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("Xamarin.Forms.Maps.WinRT.Tablet")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Xamarin.Forms.Maps.WinRT.Tablet")]
-[assembly: AssemblyCopyright("Copyright © 2016")]
-[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)]
-[assembly: ExportRenderer(typeof (Map), typeof (MapRenderer))]
\ No newline at end of file
+++ /dev/null
-<?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>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{E5C4698D-FB57-4EEC-98C0-89E620F6920A}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Maps.WinRT</RootNamespace>
- <AssemblyName>Xamarin.Forms.Maps.WinRT.Tablet</AssemblyName>
- <DefaultLanguage>en-US</DefaultLanguage>
- <TargetPlatformVersion>8.1</TargetPlatformVersion>
- <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <NoWarn>2008;4014</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <NoWarn>2008;4014</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\ARM\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>
- </NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
- <OutputPath>bin\ARM\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>
- </NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x64\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>2008;4014</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
- <OutputPath>bin\x64\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>2008;4014</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x86\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>2008;4014</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
- <OutputPath>bin\x86\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>2008;4014</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT.Tablet\Xamarin.Forms.Platform.WinRT.Tablet.csproj">
- <Project>{d3f9265a-30ac-43e8-a3eb-59bb76d2d0bf}</Project>
- <Name>Xamarin.Forms.Platform.WinRT.Tablet</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Maps.UWP\FormsMaps.cs">
- <Link>FormsMaps.cs</Link>
- </Compile>
- <Compile Include="GeocoderBackend.cs" />
- <Compile Include="MapRenderer.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <ItemGroup>
- <SDKReference Include="Bing.Maps.Xaml, Version=1.313.0825.0">
- <Name>Bing Maps for C#, C++, or Visual Basic</Name>
- </SDKReference>
- <SDKReference Include="Microsoft.VCLibs, version=12.0">
- <Name>Microsoft Visual C++ 2013 Runtime Package for Windows</Name>
- </SDKReference>
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' ">
- <VisualStudioVersion>12.0</VisualStudioVersion>
- </PropertyGroup>
- <PropertyGroup>
- <SDKReferenceDirectoryRoot>$(SolutionDir)\.\tools\BingMapsSdk;$(LocalAppData)\Microsoft SDKs;$(MSBuildProgramFiles32)\Microsoft SDKs</SDKReferenceDirectoryRoot>
- </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
-using System;
-using System.ComponentModel;
+using System.ComponentModel;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ActivityIndicatorRenderer : ViewRenderer<ActivityIndicator, FormsProgressBar>
{
-#if !WINDOWS_UWP
- Windows.UI.Xaml.Media.SolidColorBrush _resourceBrush;
-#endif
object _foregroundDefault;
protected override void OnElementChanged(ElementChangedEventArgs<ActivityIndicator> e)
void OnControlLoaded(object sender, RoutedEventArgs routedEventArgs)
{
-#if !WINDOWS_UWP
- _resourceBrush = (Control.Resources["ProgressBarIndeterminateForegroundThemeBrush"] as Windows.UI.Xaml.Media.SolidColorBrush);
- _foregroundDefault = _resourceBrush.Color;
-#else
_foregroundDefault = Control.GetForegroundCache();
-#endif
UpdateColor();
}
if (color.IsDefault)
{
-#if !WINDOWS_UWP
- _resourceBrush.Color = (Windows.UI.Color) _foregroundDefault;
-#else
Control.RestoreForegroundCache(_foregroundDefault);
-#endif
}
else
{
-#if !WINDOWS_UWP
- _resourceBrush.Color = color.ToWindowsColor();
-#else
Control.Foreground = color.ToBrush();
-#endif
}
}
using Windows.UI.Xaml;
-using Xamarin.Forms.Internals;
-
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class AlignmentExtensions
{
using System.Threading;
using System.Threading.Tasks;
-namespace Xamarin.Forms.Platform.WinPhone
+namespace Xamarin.Forms.Platform.UWP
{
internal sealed class AsyncValue<T> : INotifyPropertyChanged
{
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal sealed class BackgroundTracker<T> : VisualElementTracker<Page, T> where T : FrameworkElement
{
using System;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class BoolToVisibilityConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Shapes;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class BoxViewRenderer : ViewRenderer<BoxView, Windows.UI.Xaml.Shapes.Rectangle>
{
using System;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class BrushHelpers
{
using WImage = Windows.UI.Xaml.Controls.Image;
using Windows.UI.Xaml.Input;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ButtonRenderer : ViewRenderer<Button, FormsButton>
{
using System.Collections.Specialized;
using System.ComponentModel;
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Controls;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class CarouselPageRenderer : FlipView, IVisualElementRenderer
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class CaseConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class CellControl : ContentControl
{
using System;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class CollapseWhenEmptyConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class ColorConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class ConvertExtensions
{
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class DatePickerRenderer : ViewRenderer<DatePicker, Windows.UI.Xaml.Controls.DatePicker>
{
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal sealed class DefaultRenderer : ViewRenderer<View, FrameworkElement>
{
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class EditorRenderer : ViewRenderer<Editor, FormsTextBox>
{
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class EntryCellTextBox : TextBox
{
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Reflection;
-using Windows.Foundation.Metadata;
+using System.ComponentModel;
using Windows.System;
-using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
+namespace Xamarin.Forms.Platform.UWP
{
public class EntryRenderer : ViewRenderer<Entry, FormsTextBox>
{
if (args?.Key != VirtualKey.Enter)
return;
-#if WINDOWS_UWP
+
// Hide the soft keyboard; this matches the behavior of Forms on Android/iOS
Windows.UI.ViewManagement.InputPane.GetForCurrentView().TryHide();
-#else
- // WinRT doesn't have TryHide(), so the best we can do is force the control to unfocus
- UnfocusControl(Control);
-#endif
((IEntryController)Element).SendCompleted();
}
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
public sealed class ExportRendererAttribute : HandlerAttribute
using Windows.UI;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class Extensions
{
using System.Threading.Tasks;
using Windows.UI.Xaml.Media.Imaging;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class FileImageSourceHandler : IImageSourceHandler
{
using System;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class FileImageSourcePathConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml;
using WFlowDirection = Windows.UI.Xaml.FlowDirection;
using WTextAlignment = Windows.UI.Xaml.TextAlignment;
-using Xamarin.Forms.Internals;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
+
namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class FlowDirectionExtensions
{
using System;
using Windows.UI.Text;
using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Documents;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
using WApplication = Windows.UI.Xaml.Application;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class FontExtensions
{
using Windows.ApplicationModel.Activation;
using Windows.ApplicationModel.Resources.Core;
using Windows.Foundation.Metadata;
-using Windows.UI;
using Windows.UI.Core;
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
using Xamarin.Forms.Platform.UWP;
-#else
-using Xamarin.Forms.Platform.WinRT;
-
-#endif
-
namespace Xamarin.Forms
{
public static partial class Forms
static ApplicationExecutionState s_state;
public static bool IsInitialized { get; private set; }
-
-#if WINDOWS_UWP
-
public static void Init(IActivatedEventArgs launchActivatedEventArgs, IEnumerable<Assembly> rendererAssemblies = null)
-#else
- public static void Init(IActivatedEventArgs launchActivatedEventArgs)
-#endif
{
if (IsInitialized)
return;
Device.SetIdiom(TargetIdiom.Tablet);
Device.SetFlowDirection(GetFlowDirection());
Device.PlatformServices = new WindowsPlatformServices(Window.Current.Dispatcher);
-#if WINDOWS_UWP
Device.SetFlags(s_flags);
-#endif
Device.Info = new WindowsDeviceInfo();
-#if WINDOWS_UWP
switch (DetectPlatform())
{
case Windows.Foundation.Metadata.Platform.Windows:
Device.SetIdiom(TargetIdiom.Tablet);
break;
}
-#endif
ExpressionSearch.Default = new WindowsExpressionSearch();
-#if WINDOWS_UWP
Registrar.ExtraAssemblies = rendererAssemblies?.ToArray();
-#endif
Registrar.RegisterAll(new[] { typeof(ExportRendererAttribute), typeof(ExportCellAttribute), typeof(ExportImageSourceHandlerAttribute) });
IsInitialized = true;
s_state = launchActivatedEventArgs.PreviousExecutionState;
-#if WINDOWS_UWP
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
Platform.UWP.Platform.SubscribeAlertsAndActionSheets();
-#endif
}
static Windows.Foundation.Metadata.Platform DetectPlatform()
{
-#if WINDOWS_UWP
bool isHardwareButtonsAPIPresent = ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons");
if (isHardwareButtonsAPIPresent)
return Windows.Foundation.Metadata.Platform.WindowsPhone;
-#endif
return Windows.Foundation.Metadata.Platform.Windows;
}
static Windows.UI.Xaml.ResourceDictionary GetTabletResources()
{
return new Windows.UI.Xaml.ResourceDictionary {
-#if !WINDOWS_UWP
- Source = new Uri("ms-appx:///Xamarin.Forms.Platform.WinRT.Tablet/TabletResources.xbf")
-#else
Source = new Uri("ms-appx:///Xamarin.Forms.Platform.UAP/Resources.xbf")
-#endif
};
}
-#if WINDOWS_UWP
static void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Application app = Application.Current;
e.Handled = platform.BackButtonPressed();
}
-#endif
}
}
\ No newline at end of file
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
using WContentPresenter = Windows.UI.Xaml.Controls.ContentPresenter;
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class FormsButton : Windows.UI.Xaml.Controls.Button
{
public static readonly DependencyProperty BackgroundColorProperty = DependencyProperty.Register(nameof(BackgroundColor), typeof(Brush), typeof(FormsButton),
new PropertyMetadata(default(Brush), OnBackgroundColorChanged));
-#if WINDOWS_UWP
WContentPresenter _contentPresenter;
-#else
- Border _border;
-#endif
public Brush BackgroundColor
{
{
base.OnApplyTemplate();
-#if WINDOWS_UWP
- _contentPresenter = GetTemplateChild("ContentPresenter") as WContentPresenter;
-#else
- _border = GetTemplateChild("Border") as Border;
-#endif
+ _contentPresenter = GetTemplateChild("ContentPresenter") as WContentPresenter;
+
UpdateBackgroundColor();
UpdateBorderRadius();
}
if (BackgroundColor == null)
BackgroundColor = Background;
-#if WINDOWS_UWP
if (_contentPresenter != null)
_contentPresenter.Background = BackgroundColor;
-#else
- if (_border != null)
- _border.Background = BackgroundColor;
-#endif
Background = Color.Transparent.ToBrush();
}
void UpdateBorderRadius()
{
-#if WINDOWS_UWP
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(BorderRadius);
-#else
- if (_border != null)
- _border.CornerRadius = new CornerRadius(BorderRadius);
-#endif
}
}
}
\ No newline at end of file
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Animation;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class FormsComboBox : ComboBox
{
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class FormsPivot : Pivot, IToolbarProvider
{
- public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(Visibility), typeof(FormsPivot),
- new PropertyMetadata(Visibility.Collapsed));
+ public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(Visibility), typeof(FormsPivot), new PropertyMetadata(Visibility.Collapsed));
public static readonly DependencyProperty ToolbarForegroundProperty = DependencyProperty.Register(nameof(ToolbarForeground), typeof(Brush), typeof(FormsPivot), new PropertyMetadata(default(Brush)));
public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register(nameof(ToolbarBackground), typeof(Brush), typeof(FormsPivot), new PropertyMetadata(default(Brush)));
CommandBar _commandBar;
-#if WINDOWS_UWP
+
readonly ToolbarPlacementHelper _toolbarPlacementHelper = new ToolbarPlacementHelper();
public bool ShouldShowToolbar
get { return _toolbarPlacementHelper.ShouldShowToolBar; }
set { _toolbarPlacementHelper.ShouldShowToolBar = value; }
}
-#endif
+
TaskCompletionSource<CommandBar> _commandBarTcs;
ToolbarPlacement _toolbarPlacement;
-
public Brush ToolbarBackground
{
set
{
_toolbarPlacement = value;
-#if WINDOWS_UWP
+
_toolbarPlacementHelper. UpdateToolbarPlacement();
-#endif
}
}
_commandBar = GetTemplateChild("CommandBar") as CommandBar;
-#if WINDOWS_UWP
+
_toolbarPlacementHelper.Initialize(_commandBar, () => ToolbarPlacement, GetTemplateChild);
-#endif
TaskCompletionSource<CommandBar> tcs = _commandBarTcs;
tcs?.SetResult(_commandBar);
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class FormsProgressBar : Windows.UI.Xaml.Controls.ProgressBar
{
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
/// <summary>
/// An intermediate class for injecting bindings for things the default
}
}
- protected override void OnGotFocus(RoutedEventArgs e)
- {
- base.OnGotFocus(e);
-
-#if !WINDOWS_UWP
- // If we're on Windows 8.1 phone, the Visual State Manager crashes if we try to
- // handle alternate background colors in the focus state; we have to do
- // it manually here
- if (Device.Idiom == TargetIdiom.Phone && _borderElement != null)
- {
- _borderElement.Background = BackgroundFocusBrush;
- }
-#endif
- }
-
void DelayObfuscation()
{
int lengthDifference = base.Text.Length - Text.Length;
using System.ComponentModel;
-using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class FrameRenderer : ViewRenderer<Frame, Border>
{
using WBinding = Windows.UI.Xaml.Data.Binding;
using WBindingExpression = Windows.UI.Xaml.Data.BindingExpression;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class FrameworkElementExtensions
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class HeightConverter : Windows.UI.Xaml.Data.IValueConverter
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class HorizontalTextAlignmentConverter : Windows.UI.Xaml.Data.IValueConverter
{
--- /dev/null
+namespace Xamarin.Forms.Platform.UWP
+{
+ public interface ICellRenderer : IRegisterable
+ {
+ Windows.UI.Xaml.DataTemplate GetTemplate(Cell cell);
+ }
+}
\ No newline at end of file
using System.Threading;
using System.Threading.Tasks;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public interface IImageSourceHandler : IRegisterable
{
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal interface ITitleProvider
{
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal interface IToolbarProvider
{
using System;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public interface IVisualElementRenderer : IRegisterable, IDisposable
{
using System;
using System.Threading.Tasks;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ImageConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml.Media.Imaging;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ImageRenderer : ViewRenderer<Image, Windows.UI.Xaml.Controls.Image>
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class KeyboardConverter : Windows.UI.Xaml.Data.IValueConverter
{
using System;
using Windows.UI.Xaml.Input;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class KeyboardExtensions
{
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Documents;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class FormattedStringExtensions
{
using Windows.UI.Xaml;
using WSize = Windows.Foundation.Size;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public delegate SizeRequest? GetDesiredSizeDelegate(NativeViewWrapperRenderer renderer, double widthConstraint, double heightConstraint);
using System.ComponentModel;
-using System.Diagnostics;
using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class LayoutRenderer : ViewRenderer<Layout, FrameworkElement>
{
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ListGroupHeaderPresenter : Windows.UI.Xaml.Controls.ContentPresenter
{
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ListViewGroupStyleSelector : GroupStyleSelector
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Diagnostics;
using System.Linq;
-using System.Reflection;
using System.Threading.Tasks;
using Windows.Foundation;
-using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
using Specifics = Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ListViewRenderer : ViewRenderer<ListView, FrameworkElement>
{
bool _subscribedToItemClick;
bool _subscribedToTapped;
-
-#if !WINDOWS_UWP
- public static readonly DependencyProperty HighlightWhenSelectedProperty = DependencyProperty.RegisterAttached("HighlightWhenSelected", typeof(bool), typeof(ListViewRenderer),
- new PropertyMetadata(false));
-
- public static bool GetHighlightWhenSelected(DependencyObject dependencyObject)
- {
- return (bool)dependencyObject.GetValue(HighlightWhenSelectedProperty);
- }
-
- public static void SetHighlightWhenSelected(DependencyObject dependencyObject, bool value)
- {
- dependencyObject.SetValue(HighlightWhenSelectedProperty, value);
- }
-#endif
-
protected WListView List { get; private set; }
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
// WinRT throws an exception if you set ItemsSource directly to a CVS, so bind it.
List.DataContext = new CollectionViewSource { Source = Element.ItemsSource, IsSourceGrouped = Element.IsGroupingEnabled };
-#if !WINDOWS_UWP
- var selected = Element.SelectedItem;
- if (selected != null)
- OnElementItemSelected(null, new SelectedItemChangedEventArgs(selected));
-#endif
-
UpdateGrouping();
UpdateHeader();
UpdateFooter();
void OnListItemClicked(int index)
{
-#if !WINDOWS_UWP
- // If we're on the phone , we need to cache the selected item in case the handler
- // we're about to call changes any item indexes;
- // in some cases, those index changes will throw an exception we can't catch if
- // the listview has an item selected
- object selectedItem = null;
- if (Device.Idiom == TargetIdiom.Phone)
- {
- selectedItem = List.SelectedItem;
- List.SelectedIndex = -1;
- _deferSelection = true;
- }
-#endif
-
Element.NotifyRowTapped(index, cell: null);
_itemWasClicked = true;
-
-#if !WINDOWS_UWP
-
- if (Device.Idiom != TargetIdiom.Phone || List == null)
- {
- return;
- }
-
- _deferSelection = false;
-
- if (_deferredSelectedItemChangedEvent != null)
- {
- // If there was a selection change attempt while RowTapped was being handled, replay it
- OnElementItemSelected(_deferredSelectedItemChangedEvent.Item1, _deferredSelectedItemChangedEvent.Item2);
- _deferredSelectedItemChangedEvent = null;
- }
- else if (List?.SelectedIndex == -1 && selectedItem != null)
- {
- // Otherwise, set the selection back to whatever it was before all this started
- List.SelectedItem = selectedItem;
- }
-#endif
}
void OnListItemClicked(object sender, ItemClickEventArgs e)
void OnControlSelectionChanged(object sender, SelectionChangedEventArgs e)
{
-#if !WINDOWS_UWP
- RestorePreviousSelectedVisual();
-
- if (e.AddedItems.Count == 0)
- {
- // Deselecting an item is a valid SelectedItem change.
- if (Element.SelectedItem != List.SelectedItem)
- {
- OnListItemClicked(List.SelectedIndex);
- }
-
- return;
- }
-
- object cell = e.AddedItems[0];
- if (cell == null)
- return;
-
- if (Device.Idiom == TargetIdiom.Phone)
- {
- FrameworkElement element = FindElement(cell);
- if (element != null)
- {
- SetSelectedVisual(element);
- }
- }
-#endif
if (Element.SelectedItem != List.SelectedItem && !_itemWasClicked)
((IElementController)Element).SetValueFromRenderer(ListView.SelectedItemProperty, List.SelectedItem);
return null;
}
-#if !WINDOWS_UWP
-
- void RestorePreviousSelectedVisual()
- {
- foreach (BrushedElement highlight in _highlightedElements)
- {
- if (highlight.IsBound)
- {
- highlight.Element.SetForeground(highlight.BrushBinding);
- }
- else
- {
- highlight.Element.SetForeground(highlight.Brush);
- }
- }
-
- _highlightedElements.Clear();
- }
-
- void SetSelectedVisual(FrameworkElement element)
- {
- // Find all labels in children and set their foreground color to accent color
- IEnumerable<FrameworkElement> elementsToHighlight = FindPhoneHighlights(element);
- var systemAccentBrush = (Brush)WApp.Current.Resources["SystemColorControlAccentBrush"];
-
- foreach (FrameworkElement toHighlight in elementsToHighlight)
- {
- Brush brush = null;
- WBinding binding = toHighlight.GetForegroundBinding();
- if (binding == null)
- brush = toHighlight.GetForeground();
-
- var brushedElement = new BrushedElement(toHighlight, binding, brush);
- _highlightedElements.Add(brushedElement);
-
- toHighlight.SetForeground(systemAccentBrush);
- }
- }
-
- IEnumerable<FrameworkElement> FindPhoneHighlights(FrameworkElement element)
- {
- FrameworkElement parent = element;
- while (true)
- {
- element = parent;
- if (element is CellControl)
- break;
-
- parent = VisualTreeHelper.GetParent(element) as FrameworkElement;
- if (parent == null)
- {
- parent = element;
- break;
- }
- }
-
- return FindPhoneHighlightCore(parent);
- }
-
- IEnumerable<FrameworkElement> FindPhoneHighlightCore(DependencyObject element)
- {
- int children = VisualTreeHelper.GetChildrenCount(element);
- for (var i = 0; i < children; i++)
- {
- DependencyObject child = VisualTreeHelper.GetChild(element, i);
-
- var label = child as LabelRenderer;
- var childElement = child as FrameworkElement;
- if (childElement != null && (GetHighlightWhenSelected(childElement) || label != null))
- {
- if (label != null)
- yield return label.Control;
- else
- yield return childElement;
- }
-
- foreach (FrameworkElement recursedElement in FindPhoneHighlightCore(childElement))
- yield return recursedElement;
- }
- }
-#endif
-
bool _deferSelection = false;
Tuple<object, SelectedItemChangedEventArgs> _deferredSelectedItemChangedEvent;
-#if WINDOWS_UWP
-
protected override AutomationPeer OnCreateAutomationPeer()
{
return List == null
: new ListViewAutomationPeer(List);
}
-#endif
}
}
\ No newline at end of file
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class MasterBackgroundConverter : Windows.UI.Xaml.Data.IValueConverter
{
using System.ComponentModel;
using System.Windows.Input;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class MenuItemCommand : ICommand
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
using static System.String;
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class NativeBindingExtensions
{
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Reflection;
using Windows.UI.Xaml;
-using Xamarin.Forms.Internals;
using Xamarin.Forms.Xaml.Internals;
-#if WINDOWS_UWP
+
[assembly: Xamarin.Forms.Dependency(typeof(Xamarin.Forms.Platform.UWP.NativeBindingService))]
namespace Xamarin.Forms.Platform.UWP
-#else
-[assembly: Xamarin.Forms.Dependency(typeof(Xamarin.Forms.Platform.WinRT.NativeBindingService))]
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class NativeBindingService : INativeBindingService
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
class NativeEventWrapper : INotifyPropertyChanged
{
-using System;
-using System.ComponentModel;
+using System.ComponentModel;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
class NativePropertyListener : DependencyObject, INotifyPropertyChanged
{
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Reflection;
using Windows.UI.Xaml;
-using Xamarin.Forms.Internals;
using Xamarin.Forms.Xaml.Internals;
-#if WINDOWS_UWP
+
[assembly: Xamarin.Forms.Dependency(typeof(Xamarin.Forms.Platform.UWP.NativeValueConverterService))]
namespace Xamarin.Forms.Platform.UWP
-#else
-[assembly: Xamarin.Forms.Dependency(typeof(Xamarin.Forms.Platform.WinRT.NativeValueConverterService))]
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class NativeValueConverterService : INativeValueConverterService
{
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class NativeViewWrapper : View
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class NativeViewWrapperRenderer : ViewRenderer<NativeViewWrapper, FrameworkElement>
{
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
-using System.Linq;
using System.Threading.Tasks;
using Windows.Devices.Input;
using Windows.UI.Input;
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Animation;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
+
using Windows.UI.Core;
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public partial class NavigationPageRenderer : IVisualElementRenderer, ITitleProvider, IToolbarProvider
{
UpdateNavigationBarBackground();
UpdateToolbarPlacement();
-#if WINDOWS_UWP
// Enforce consistency rules on toolbar (show toolbar if top-level page is Navigation Page)
_container.ShouldShowToolbar = _parentMasterDetailPage == null && _parentTabbedPage == null;
if (_parentTabbedPage != null)
Element.Appearing += OnElementAppearing;
-#endif
Element.PropertyChanged += OnElementPropertyChanged;
Element.PushRequested += OnPushRequested;
_container.SizeChanged -= OnNativeSizeChanged;
_container.BackClicked -= OnBackClicked;
-#if WINDOWS_UWP
if (_parentTabbedPage != null)
Element.Appearing -= OnElementAppearing;
-#endif
SetElement(null);
SetPage(null, false, true);
if (_parentMasterDetailPage != null)
_parentMasterDetailPage.PropertyChanged -= MultiPagePropertyChanged;
-#if WINDOWS_UWP
if (_navManager != null)
{
_navManager.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
}
-#endif
}
protected void OnElementChanged(VisualElementChangedEventArgs e)
UpdateNavigationBarBackground();
else if (e.PropertyName == Page.PaddingProperty.PropertyName)
UpdatePadding();
-#if WINDOWS_UWP
+
else if (e.PropertyName == PlatformConfiguration.WindowsSpecific.Page.ToolbarPlacementProperty.PropertyName)
UpdateToolbarPlacement();
-#endif
}
void OnLoaded(object sender, RoutedEventArgs args)
if (Element == null)
return;
-#if WINDOWS_UWP
_navManager = SystemNavigationManager.GetForCurrentView();
-#endif
Element.SendAppearing();
UpdateBackButton();
UpdateTitleOnParents();
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class PageControl : ContentControl, IToolbarProvider
{
AppBarButton _backButton;
CommandBar _commandBar;
-#if WINDOWS_UWP
ToolbarPlacement _toolbarPlacement;
readonly ToolbarPlacementHelper _toolbarPlacementHelper = new ToolbarPlacementHelper();
get { return _toolbarPlacementHelper.ShouldShowToolBar; }
set { _toolbarPlacementHelper.ShouldShowToolBar = value; }
}
-#endif
TaskCompletionSource<CommandBar> _commandBarTcs;
Windows.UI.Xaml.Controls.ContentPresenter _presenter;
set { SetValue(ToolbarBackgroundProperty, value); }
}
-#if WINDOWS_UWP
public ToolbarPlacement ToolbarPlacement
{
get { return _toolbarPlacement; }
_toolbarPlacementHelper.UpdateToolbarPlacement();
}
}
-#endif
public bool ShowBackButton
{
_commandBar = GetTemplateChild("CommandBar") as CommandBar;
-#if WINDOWS_UWP
+
_toolbarPlacementHelper.Initialize(_commandBar, () => ToolbarPlacement, GetTemplateChild);
-#endif
TaskCompletionSource<CommandBar> tcs = _commandBarTcs;
tcs?.SetResult(_commandBar);
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class PageRenderer : VisualElementRenderer<Page, FrameworkElement>
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class PageToRenderedElementConverter : Windows.UI.Xaml.Data.IValueConverter
{
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class PickerRenderer : ViewRenderer<Picker, FormsComboBox>
{
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public abstract partial class Platform : IPlatform, INavigation, IToolbarProvider
{
_toolbarTracker.CollectionChanged += OnToolbarItemsChanged;
-#if !WINDOWS_UWP // UWP gets subscribed in Forms.Init
- SubscribeAlertsAndActionSheets();
-#endif
UpdateBounds();
-#if WINDOWS_UWP
InitializeStatusBar();
-#endif
}
internal void SetPage(Page newRoot)
internal bool BackButtonPressed()
{
-#if !WINDOWS_UWP
- if (_currentActionSheet != null)
- {
- CancelActionSheet();
- return true;
- }
-#endif
Page lastRoot = _navModel.Roots.Last();
bool handled = lastRoot.SendBackButtonPressed();
_currentPage = newPage;
UpdateToolbarTracker();
-#if WINDOWS_UWP
+
UpdateToolbarTitle(newPage);
-#endif
+
await UpdateToolbarItems();
}
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
+namespace Xamarin.Forms.Platform.UWP
{
public static class PlatformConfigurationExtensions
{
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public abstract class PlatformEffect : PlatformEffect<FrameworkElement, FrameworkElement>
{
using Windows.UI.Xaml.Controls.Primitives;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ProgressBarRenderer : ViewRenderer<ProgressBar, Windows.UI.Xaml.Controls.ProgressBar>
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class RendererFactory
{
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ScrollViewRenderer : ViewRenderer<ScrollView, ScrollViewer>
{
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls.Primitives;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class SliderRenderer : ViewRenderer<Slider, Windows.UI.Xaml.Controls.Slider>
{
if (Element.VerticalOptions.Alignment == LayoutAlignment.Center && Control.Orientation == Windows.UI.Xaml.Controls.Orientation.Horizontal)
{
Control.VerticalAlignment = VerticalAlignment.Center;
-#if WINDOWS_UWP
+
slider.Margin = new Windows.UI.Xaml.Thickness(0, 7, 0, 0);
-#else
- slider.Margin = new Windows.UI.Xaml.Thickness(0, 13, 0, 0);
-#endif
}
}
using System;
using System.ComponentModel;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class StepperRenderer : ViewRenderer<Stepper, StepperControl>
{
using System.Threading.Tasks;
using Windows.UI.Xaml.Media.Imaging;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class StreamImageSourceHandler : IImageSourceHandler
{
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class SwitchRenderer : ViewRenderer<Switch, ToggleSwitch>
{
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class TableViewRenderer : ViewRenderer<TableView, Windows.UI.Xaml.Controls.ListView>
{
using System.Threading.Tasks;
using Windows.Foundation;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class TaskExtensions
{
using System;
using Windows.UI.Xaml;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class TextAlignmentToHorizontalAlignmentConverter : Windows.UI.Xaml.Data.IValueConverter
{
using WApplication = Windows.UI.Xaml.Application;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class TextCellRenderer : ICellRenderer
{
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class TimePickerRenderer : ViewRenderer<TimePicker, Windows.UI.Xaml.Controls.TimePicker>
{
using System;
-using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Windows.UI.Xaml.Media.Imaging;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public sealed class UriImageSourceHandler : IImageSourceHandler
{
using System.Collections.Generic;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal static class ViewExtensions
{
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ViewRenderer<TElement, TNativeElement> : VisualElementRenderer<TElement, TNativeElement> where TElement : View where TNativeElement : FrameworkElement
{
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class ViewToRendererConverter : Windows.UI.Xaml.Data.IValueConverter
{
using System;
-namespace Xamarin.Forms.Platform.WinPhone
+namespace Xamarin.Forms.Platform.UWP
{
public class VisualElementChangedEventArgs : ElementChangedEventArgs<VisualElement>
{
using System;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public static class VisualElementExtensions
{
using System.Collections.ObjectModel;
using Windows.UI.Xaml.Controls;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class VisualElementPackager : IDisposable
{
using System.ComponentModel;
using Windows.Foundation;
using Windows.UI.Xaml;
-using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class VisualElementRenderer<TElement, TNativeElement> : Panel, IVisualElementRenderer, IDisposable, IEffectControlProvider where TElement : VisualElement
where TNativeElement : FrameworkElement
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public class VisualElementTracker<TElement, TNativeElement> : IDisposable where TElement : VisualElement where TNativeElement : FrameworkElement
{
using System;
-using System.Collections.Generic;
using System.ComponentModel;
-using System.Diagnostics;
-using System.Threading.Tasks;
using Windows.UI.Core;
-using Windows.UI.WebUI;
using Windows.UI.Xaml.Controls;
-using Windows.Web.Http;
using Xamarin.Forms.Internals;
using static System.String;
-#if WINDOWS_UWP
-namespace Xamarin.Forms.Platform.UWP
-#else
-namespace Xamarin.Forms.Platform.WinRT
-#endif
+namespace Xamarin.Forms.Platform.UWP
{
public class WebViewRenderer : ViewRenderer<WebView, Windows.UI.Xaml.Controls.WebView>, IWebViewDelegate
{
using System.ComponentModel;
using Windows.ApplicationModel;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
public abstract class WindowsBasePage : Windows.UI.Xaml.Controls.Page
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal abstract class WindowsBasePlatformServices : IPlatformServices
{
public bool IsInvokeRequired => !CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess;
-#if WINDOWS_UWP
public string RuntimePlatform => Device.UWP;
-#else
- public string RuntimePlatform => Device.WinRT;
-#endif
public void OpenUriAction(Uri uri)
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class WindowsDeviceInfo : DeviceInfo
{
using System.Reflection;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal sealed class WindowsExpressionSearch : IExpressionSearch
{
using Windows.Storage.Streams;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class WindowsIsolatedStorage : IIsolatedStorageFile
{
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
+namespace Xamarin.Forms.Platform.UWP
{
public class WindowsPage : WindowsBasePage
{
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
+namespace Xamarin.Forms.Platform.UWP
{
internal sealed class WindowsPlatform : Platform
{
using Windows.UI.Core;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class WindowsPlatformServices : WindowsBasePlatformServices
{
using Xamarin.Forms.Internals;
using WStyle = Windows.UI.Xaml.Style;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal sealed class WindowsResourcesProvider : ISystemResourcesProvider
{
[Device.Styles.CaptionStyleKey] = GetStyle("CaptionTextBlockStyle", prototype),
[Device.Styles.ListItemDetailTextStyleKey] = GetStyle("BodyTextBlockStyle", prototype),
-#if WINDOWS_UWP
[Device.Styles.ListItemTextStyleKey] = GetStyle("BaseTextBlockStyle", prototype),
-#else
- [Device.Styles.ListItemTextStyleKey] = GetStyle("TitleTextBlockStyle", prototype),
-#endif
};
}
using Windows.Storage;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
-
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal sealed class WindowsSerializer : IDeserializer
{
using Windows.UI.Xaml;
using Xamarin.Forms.Internals;
-#if WINDOWS_UWP
namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
{
internal class WindowsTicker : Ticker
{
<None Include="project.json" />
</ItemGroup>
<ItemGroup>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Phone\FormsPivot.cs">
- <Link>FormsPivot.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\AlignmentExtensions.cs">
- <Link>AlignmentExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\BrushHelpers.cs">
- <Link>BrushHelpers.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FlowDirectionExtensions.cs">
- <Link>FlowDirectionExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsProgressBar.cs">
- <Link>FormsProgressBar.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsTextBox.cs">
- <Link>FormsTextBox.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsComboBox.cs">
- <Link>FormsComboBox.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\HorizontalTextAlignmentConverter.cs">
- <Link>HorizontalTextAlignmentConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ITitleProvider.cs">
- <Link>ITitleProvider.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\IToolbarProvider.cs">
- <Link>IToolbarProvider.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativeBindingExtensions.cs">
- <Link>NativeBindingExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativeEventWrapper.cs">
- <Link>NativeEventWrapper.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativePropertyListener.cs">
- <Link>NativePropertyListener.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativeViewWrapper.cs">
- <Link>NativeViewWrapper.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativeViewWrapperRenderer.cs">
- <Link>NativeViewWrapperRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PlatformConfigurationExtensions.cs">
- <Link>PlatformConfigurationExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PlatformEffect.cs">
- <Link>PlatformEffect.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\UriImageSourceHandler.cs">
- <Link>UriImageSourceHandler.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ViewExtensions.cs">
- <Link>ViewExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\LayoutExtensions.cs">
- <Link>LayoutExtensions.cs</Link>
- </Compile>
+ <Compile Include="FormsPivot.cs" />
+ <Compile Include="AlignmentExtensions.cs" />
+ <Compile Include="BrushHelpers.cs" />
+ <Compile Include="FlowDirectionExtensions.cs" />
+ <Compile Include="FormsProgressBar.cs"/>
+ <Compile Include="FormsTextBox.cs"/>
+ <Compile Include="FormsComboBox.cs" />
+ <Compile Include="HorizontalTextAlignmentConverter.cs" />
+ <Compile Include="ITitleProvider.cs" />
+ <Compile Include="IToolbarProvider.cs" />
+ <Compile Include="NativeBindingExtensions.cs" />
+ <Compile Include="NativeEventWrapper.cs"/>
+ <Compile Include="NativePropertyListener.cs" />
+ <Compile Include="NativeViewWrapper.cs" />
+ <Compile Include="NativeViewWrapperRenderer.cs" />
+ <Compile Include="PlatformConfigurationExtensions.cs" />
+ <Compile Include="PlatformEffect.cs" />
+ <Compile Include="UriImageSourceHandler.cs"/>
+ <Compile Include="ViewExtensions.cs" />
+ <Compile Include="LayoutExtensions.cs"/>
<Compile Include="Flags.cs" />
<Compile Include="FormsPresenter.cs" />
<Compile Include="FormsUWP.cs" />
<Compile Include="PageExtensions.cs" />
<Compile Include="PlatformUWP.cs" />
<Compile Include="SearchBarRenderer.cs" />
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\TextAlignmentToHorizontalAlignmentConverter.cs">
- <Link>TextAlignmentToHorizontalAlignmentConverter.cs</Link>
- </Compile>
+ <Compile Include="TextAlignmentToHorizontalAlignmentConverter.cs"/>
<Compile Include="StepperControl.cs" />
<Compile Include="TabbedPageRenderer.cs" />
<Compile Include="ToolbarPlacementHelper.cs" />
<Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Tablet\Forms.cs">
- <Link>Forms.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Tablet\WindowsPage.cs">
- <Link>WindowsPage.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Tablet\WindowsPlatform.cs">
- <Link>WindowsPlatform.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Tablet\WindowsPlatformServices.cs">
- <Link>WindowsPlatformServices.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT.Tablet\WindowsResourcesProvider.cs">
- <Link>WindowsResourcesProvider.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ActivityIndicatorRenderer.cs">
- <Link>ActivityIndicatorRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\AsyncValue.cs">
- <Link>AsyncValue.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\BackgroundTracker.cs">
- <Link>BackgroundTracker.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\BoolToVisibilityConverter.cs">
- <Link>BoolToVisibilityConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\BoxViewRenderer.cs">
- <Link>BoxViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ButtonRenderer.cs">
- <Link>ButtonRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\CarouselPageRenderer.cs">
- <Link>CarouselPageRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\CaseConverter.cs">
- <Link>CaseConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\CellControl.cs">
- <Link>CellControl.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\CollapseWhenEmptyConverter.cs">
- <Link>CollapseWhenEmptyConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ColorConverter.cs">
- <Link>ColorConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ConvertExtensions.cs">
- <Link>ConvertExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\DatePickerRenderer.cs">
- <Link>DatePickerRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\DefaultRenderer.cs">
- <Link>DefaultRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\EditorRenderer.cs">
- <Link>EditorRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\EntryCellTextBox.cs">
- <Link>EntryCellTextBox.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\EntryRenderer.cs">
- <Link>EntryRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ExportRendererAttribute.cs">
- <Link>ExportRendererAttribute.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\Extensions.cs">
- <Link>Extensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FileImageSourceHandler.cs">
- <Link>FileImageSourceHandler.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FileImageSourcePathConverter.cs">
- <Link>FileImageSourcePathConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FontExtensions.cs">
- <Link>FontExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsButton.cs">
- <Link>FormsButton.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FrameRenderer.cs">
- <Link>FrameRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\FrameworkElementExtensions.cs">
- <Link>FrameworkElementExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\HeightConverter.cs">
- <Link>HeightConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ICellRenderer.cs">
- <Link>ICellRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\IImageSourceHandler.cs">
- <Link>IImageSourceHandler.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ImageConverter.cs">
- <Link>ImageConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ImageRenderer.cs">
- <Link>ImageRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\IVisualElementRenderer.cs">
- <Link>IVisualElementRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\KeyboardConverter.cs">
- <Link>KeyboardConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\KeyboardExtensions.cs">
- <Link>KeyboardExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\LabelRenderer.cs">
- <Link>LabelRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\LayoutRenderer.cs">
- <Link>LayoutRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ListGroupHeaderPresenter.cs">
- <Link>ListGroupHeaderPresenter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ListViewGroupStyleSelector.cs">
- <Link>ListViewGroupStyleSelector.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ListViewRenderer.cs">
- <Link>ListViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\MasterBackgroundConverter.cs">
- <Link>MasterBackgroundConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\MenuItemCommand.cs">
- <Link>MenuItemCommand.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\NavigationPageRenderer.cs">
- <Link>NavigationPageRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PageControl.cs">
- <Link>PageControl.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PageRenderer.cs">
- <Link>PageRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PageToRenderedElementConverter.cs">
- <Link>PageToRenderedElementConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\PickerRenderer.cs">
- <Link>PickerRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\Platform.cs">
- <Link>Platform.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ProgressBarRenderer.cs">
- <Link>ProgressBarRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\RendererFactory.cs">
- <Link>RendererFactory.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ScrollViewRenderer.cs">
- <Link>ScrollViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\SliderRenderer.cs">
- <Link>SliderRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\StepperRenderer.cs">
- <Link>StepperRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\StreamImagesourceHandler.cs">
- <Link>StreamImagesourceHandler.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\SwitchRenderer.cs">
- <Link>SwitchRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\TableViewRenderer.cs">
- <Link>TableViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\TaskExtensions.cs">
- <Link>TaskExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\TextCellRenderer.cs">
- <Link>TextCellRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\TimePickerRenderer.cs">
- <Link>TimePickerRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ViewRenderer.cs">
- <Link>ViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\ViewToRendererConverter.cs">
- <Link>ViewToRendererConverter.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\VisualElementChangedEventArgs.cs">
- <Link>VisualElementChangedEventArgs.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\VisualElementExtensions.cs">
- <Link>VisualElementExtensions.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\VisualElementPackager.cs">
- <Link>VisualElementPackager.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\VisualElementRenderer.cs">
- <Link>VisualElementRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\VisualElementTracker.cs">
- <Link>VisualElementTracker.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WebViewRenderer.cs">
- <Link>WebViewRenderer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsBasePage.cs">
- <Link>WindowsBasePage.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsBasePlatformServices.cs">
- <Link>WindowsBasePlatformServices.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsDeviceInfo.cs">
- <Link>WindowsDeviceInfo.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsExpressionSearch.cs">
- <Link>WindowsExpressionSearch.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsIsolatedStorage.cs">
- <Link>WindowsIsolatedStorage.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsSerializer.cs">
- <Link>WindowsSerializer.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.WinRT\WindowsTicker.cs">
- <Link>WindowsTicker.cs</Link>
- </Compile>
+ <Compile Include="Forms.cs" />
+ <Compile Include="WindowsPage.cs" />
+ <Compile Include="WindowsPlatform.cs" />
+ <Compile Include="WindowsPlatformServices.cs" />
+ <Compile Include="WindowsResourcesProvider.cs" />
+ <Compile Include="ActivityIndicatorRenderer.cs" />
+ <Compile Include="AsyncValue.cs" />
+ <Compile Include="BackgroundTracker.cs" />
+ <Compile Include="BoolToVisibilityConverter.cs" />
+ <Compile Include="BoxViewRenderer.cs" />
+ <Compile Include="ButtonRenderer.cs" />
+ <Compile Include="CarouselPageRenderer.cs" />
+ <Compile Include="CaseConverter.cs" />
+ <Compile Include="CellControl.cs" />
+ <Compile Include="CollapseWhenEmptyConverter.cs" />
+ <Compile Include="ColorConverter.cs" />
+ <Compile Include="ConvertExtensions.cs" />
+ <Compile Include="DatePickerRenderer.cs" />
+ <Compile Include="DefaultRenderer.cs" />
+ <Compile Include="EditorRenderer.cs" />
+ <Compile Include="EntryCellTextBox.cs" />
+ <Compile Include="EntryRenderer.cs" />
+ <Compile Include="ExportRendererAttribute.cs" />
+ <Compile Include="Extensions.cs" />
+ <Compile Include="FileImageSourceHandler.cs" />
+ <Compile Include="FileImageSourcePathConverter.cs" />
+ <Compile Include="FontExtensions.cs" />
+ <Compile Include="FormsButton.cs" />
+ <Compile Include="FrameRenderer.cs" />
+ <Compile Include="FrameworkElementExtensions.cs" />
+ <Compile Include="HeightConverter.cs" />
+ <Compile Include="ICellRenderer.cs" />
+ <Compile Include="IImageSourceHandler.cs" />
+ <Compile Include="ImageConverter.cs" />
+ <Compile Include="ImageRenderer.cs" />
+ <Compile Include="IVisualElementRenderer.cs" />
+ <Compile Include="KeyboardConverter.cs" />
+ <Compile Include="KeyboardExtensions.cs" />
+ <Compile Include="LabelRenderer.cs" />
+ <Compile Include="LayoutRenderer.cs" />
+ <Compile Include="ListGroupHeaderPresenter.cs" />
+ <Compile Include="ListViewGroupStyleSelector.cs" />
+ <Compile Include="ListViewRenderer.cs" />
+ <Compile Include="MasterBackgroundConverter.cs" />
+ <Compile Include="MenuItemCommand.cs" />
+ <Compile Include="NavigationPageRenderer.cs" />
+ <Compile Include="PageControl.cs" />
+ <Compile Include="PageRenderer.cs" />
+ <Compile Include="PageToRenderedElementConverter.cs" />
+ <Compile Include="PickerRenderer.cs" />
+ <Compile Include="Platform.cs" />
+ <Compile Include="ProgressBarRenderer.cs" />
+ <Compile Include="RendererFactory.cs" />
+ <Compile Include="ScrollViewRenderer.cs" />
+ <Compile Include="SliderRenderer.cs" />
+ <Compile Include="StepperRenderer.cs" />
+ <Compile Include="StreamImagesourceHandler.cs"/>
+ <Compile Include="SwitchRenderer.cs" />
+ <Compile Include="TableViewRenderer.cs" />
+ <Compile Include="TaskExtensions.cs" />
+ <Compile Include="TextCellRenderer.cs" />
+ <Compile Include="TimePickerRenderer.cs" />
+ <Compile Include="ViewRenderer.cs" />
+ <Compile Include="ViewToRendererConverter.cs" />
+ <Compile Include="VisualElementChangedEventArgs.cs" />
+ <Compile Include="VisualElementExtensions.cs" />
+ <Compile Include="VisualElementPackager.cs" />
+ <Compile Include="VisualElementRenderer.cs" />
+ <Compile Include="VisualElementTracker.cs" />
+ <Compile Include="WebViewRenderer.cs" />
+ <Compile Include="WindowsBasePage.cs" />
+ <Compile Include="WindowsBasePlatformServices.cs" />
+ <Compile Include="WindowsDeviceInfo.cs" />
+ <Compile Include="WindowsExpressionSearch.cs" />
+ <Compile Include="WindowsIsolatedStorage.cs" />
+ <Compile Include="WindowsSerializer.cs" />
+ <Compile Include="WindowsTicker.cs" />
+
+
<Compile Include="FormsCommandBar.cs" />
<Compile Include="MasterDetailControl.cs" />
<Compile Include="MasterDetailPageRenderer.cs" />
+++ /dev/null
-using System.ComponentModel;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ActivityIndicatorRenderer : ViewRenderer<ActivityIndicator, System.Windows.Controls.ProgressBar>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<ActivityIndicator> e)
- {
- base.OnElementChanged(e);
-
- SetNativeControl(new System.Windows.Controls.ProgressBar());
-
- Control.IsIndeterminate = Element.IsRunning;
- UpdateColor();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == ActivityIndicator.IsRunningProperty.PropertyName)
- Control.IsIndeterminate = Element.IsRunning;
- else if (e.PropertyName == ActivityIndicator.ColorProperty.PropertyName)
- UpdateColor();
- }
-
- void UpdateColor()
- {
- Color color = Element.Color;
- if (color == Color.Default)
- Control.ClearValue(System.Windows.Controls.Control.ForegroundProperty);
- else
- Control.Foreground = color.ToBrush();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class AlignmentExtensions
- {
- internal static System.Windows.TextAlignment ToNativeTextAlignment(this TextAlignment alignment)
- {
- switch (alignment)
- {
- case TextAlignment.Center:
- return System.Windows.TextAlignment.Center;
- case TextAlignment.End:
- return System.Windows.TextAlignment.Right;
- default:
- return System.Windows.TextAlignment.Left;
- }
- }
-
- internal static VerticalAlignment ToNativeVerticalAlignment(this TextAlignment alignment)
- {
- switch (alignment)
- {
- case TextAlignment.Center:
- return VerticalAlignment.Center;
- case TextAlignment.End:
- return VerticalAlignment.Bottom;
- default:
- return VerticalAlignment.Top;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal class Animatable : IAnimatable
- {
- public void BatchBegin()
- {
- }
-
- public void BatchCommit()
- {
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows.Shapes;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class BoxViewRenderer : ViewRenderer<BoxView, System.Windows.Shapes.Rectangle>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e)
- {
- base.OnElementChanged(e);
-
- var rect = new System.Windows.Shapes.Rectangle();
- rect.DataContext = Element;
- rect.SetBinding(Shape.FillProperty, new System.Windows.Data.Binding("Color") { Converter = new ColorConverter() });
- SetNativeControl(rect);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class BrushHelpers
- {
- /// <summary>
- /// Handles the logic for setting a Xamarin.Forms Color for a Brush
- /// while caching the original default brush
- /// </summary>
- /// <param name="color">The target Xamarin.Forms.Color</param>
- /// <param name="defaultbrush">The renderer's cache for the default brush</param>
- /// <param name="getter">Delegate for retrieving the Control's current Brush</param>
- /// <param name="setter">Delegate for setting the Control's Brush</param>
- public static void UpdateColor(Color color, ref Brush defaultbrush, Func<Brush> getter, Action<Brush> setter)
- {
- if (color.IsDefault)
- {
- if (defaultbrush == null)
- {
- return;
- }
-
- setter(defaultbrush);
- return;
- }
-
- if (defaultbrush == null)
- {
- defaultbrush = getter();
- }
-
- setter(color.ToBrush());
- }
- }
-}
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using Xamarin.Forms.Internals;
-using WButton = System.Windows.Controls.Button;
-using WImage = System.Windows.Controls.Image;
-using WThickness = System.Windows.Thickness;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ButtonRenderer : ViewRenderer<Button, WButton>
- {
- bool _fontApplied;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
- {
- base.OnElementChanged(e);
-
- var button = new WButton();
- button.ClickMode = ClickMode.Press;
- button.Click += HandleButtonClick;
- button.AddHandler(UIElement.TapEvent, new EventHandler<GestureEventArgs>(HandleButtonTap), true);
- SetNativeControl(button);
-
- UpdateContent();
-
- if (Element.BackgroundColor != Color.Default)
- UpdateBackground();
-
- if (Element.TextColor != Color.Default)
- UpdateTextColor();
-
- if (Element.BorderColor != Color.Default)
- UpdateBorderColor();
-
- if (Element.BorderWidth != (double)Button.BorderWidthProperty.DefaultValue)
- UpdateBorderWidth();
-
- UpdateFont();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Button.TextProperty.PropertyName || e.PropertyName == Button.ImageProperty.PropertyName)
- UpdateContent();
- else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
- UpdateBackground();
- else if (e.PropertyName == Button.TextColorProperty.PropertyName)
- UpdateTextColor();
- else if (e.PropertyName == Button.FontProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Button.BorderColorProperty.PropertyName)
- UpdateBorderColor();
- else if (e.PropertyName == Button.BorderWidthProperty.PropertyName)
- UpdateBorderWidth();
- }
-
- void HandleButtonClick(object sender, RoutedEventArgs e)
- {
- ((IButtonController)Element)?.SendPressed();
- }
-
- void HandleButtonTap(object sender, GestureEventArgs e)
- {
- ((IButtonController)Element)?.SendReleased();
- ((IButtonController)Element)?.SendClicked();
- }
-
- void UpdateBackground()
- {
- Control.Background = Element.BackgroundColor != Color.Default ? Element.BackgroundColor.ToBrush() : (Brush)System.Windows.Application.Current.Resources["PhoneBackgroundBrush"];
- }
-
- void UpdateBorderColor()
- {
- Control.BorderBrush = Element.BorderColor != Color.Default ? Element.BorderColor.ToBrush() : (Brush)System.Windows.Application.Current.Resources["PhoneForegroundBrush"];
- }
-
- void UpdateBorderWidth()
- {
- Control.BorderThickness = Element.BorderWidth == (double)Button.BorderWidthProperty.DefaultValue ? new WThickness(3) : new WThickness(Element.BorderWidth);
- }
-
- void UpdateContent()
- {
- var text = Element.Text;
- var elementImage = Element.Image;
-
- // No image, just the text
- if (elementImage == null)
- {
- Control.Content = text;
- return;
- }
-
- var bmp = new BitmapImage(new Uri("/" + elementImage.File, UriKind.Relative));
-
- var image = new WImage
- {
- Source = bmp,
- VerticalAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Center
- };
-
- bmp.ImageOpened += (sender, args) => {
- image.Width = bmp.PixelWidth;
- image.Height = bmp.PixelHeight;
- Element.InvalidateMeasureNonVirtual(InvalidationTrigger.RendererReady);
- };
-
- // No text, just the image
- if (string.IsNullOrEmpty(text))
- {
- Control.Content = image;
- return;
- }
-
- // Both image and text, so we need to build a container for them
- Control.Content = CreateContentContainer(Element.ContentLayout, image, text);
- }
-
- static StackPanel CreateContentContainer(Button.ButtonContentLayout layout, WImage image, string text)
- {
- var container = new StackPanel();
- var textBlock = new TextBlock {
- Text = text,
- VerticalAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Center
- };
-
- var spacing = layout.Spacing;
-
- container.HorizontalAlignment = HorizontalAlignment.Center;
- container.VerticalAlignment = VerticalAlignment.Center;
-
- switch (layout.Position)
- {
- case Button.ButtonContentLayout.ImagePosition.Top:
- container.Orientation = Orientation.Vertical;
- image.Margin = new WThickness(0, 0, 0, spacing);
- container.Children.Add(image);
- container.Children.Add(textBlock);
- break;
- case Button.ButtonContentLayout.ImagePosition.Bottom:
- container.Orientation = Orientation.Vertical;
- image.Margin = new WThickness(0, spacing, 0, 0);
- container.Children.Add(textBlock);
- container.Children.Add(image);
- break;
- case Button.ButtonContentLayout.ImagePosition.Right:
- container.Orientation = Orientation.Horizontal;
- image.Margin = new WThickness(spacing, 0, 0, 0);
- container.Children.Add(textBlock);
- container.Children.Add(image);
- break;
- default:
- // Defaults to image on the left
- container.Orientation = Orientation.Horizontal;
- image.Margin = new WThickness(0, 0, spacing, 0);
- container.Children.Add(image);
- container.Children.Add(textBlock);
- break;
- }
-
- return container;
- }
-
- void UpdateFont()
- {
- if (Control == null || Element == null)
- return;
-
- if (Element.Font == Font.Default && !_fontApplied)
- return;
-
- Font fontToApply = Element.Font == Font.Default ? Font.SystemFontOfSize(NamedSize.Medium) : Element.Font;
-
- Control.ApplyFont(fontToApply);
- _fontApplied = true;
- }
-
- void UpdateTextColor()
- {
- Control.Foreground = Element.TextColor != Color.Default ? Element.TextColor.ToBrush() : (Brush)System.Windows.Application.Current.Resources["PhoneForegroundBrush"];
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal class BackgroundTracker<T> : VisualElementTracker<Page, T> where T : FrameworkElement
- {
- readonly DependencyProperty _backgroundProperty;
-
- bool _backgroundNeedsUpdate = true;
-
- public BackgroundTracker(DependencyProperty backgroundProperty)
- {
- if (backgroundProperty == null)
- throw new ArgumentNullException("backgroundProperty");
-
- _backgroundProperty = backgroundProperty;
- }
-
- protected override void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName || e.PropertyName == Page.BackgroundImageProperty.PropertyName)
- UpdateBackground();
-
- base.HandlePropertyChanged(sender, e);
- }
-
- protected override void UpdateNativeControl()
- {
- base.UpdateNativeControl();
-
- if (_backgroundNeedsUpdate)
- UpdateBackground();
- }
-
- void UpdateBackground()
- {
- if (Model == null || Element == null)
- return;
-
- if (Model.BackgroundImage != null)
- {
- Element.SetValue(_backgroundProperty, new ImageBrush { ImageSource = new BitmapImage(new Uri(Model.BackgroundImage, UriKind.Relative)) });
- }
- else if (Model.BackgroundColor != Color.Default)
- Element.SetValue(_backgroundProperty, Model.BackgroundColor.ToBrush());
-
- _backgroundNeedsUpdate = false;
- }
- }
-
- public class CarouselPagePresenter : System.Windows.Controls.ContentPresenter
- {
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
-
- DependencyObject parent = VisualTreeHelper.GetParent(this);
- while (parent != null && !(parent is PanoramaItem))
- parent = VisualTreeHelper.GetParent(parent);
-
- var panoramaItem = parent as PanoramaItem;
- if (panoramaItem == null)
- throw new Exception("No parent PanoramaItem found for carousel page");
-
- var element = (FrameworkElement)VisualTreeHelper.GetChild(panoramaItem, 0);
- element.SizeChanged += (s, e) =>
- {
- if (element.ActualWidth > 0 && element.ActualHeight > 0)
- {
- var carouselItem = (Page)DataContext;
- ((IPageController)carouselItem.RealParent).ContainerArea = new Rectangle(0, 0, element.ActualWidth, element.ActualHeight);
- }
- };
- }
- }
-
- public class CarouselPageRenderer : Panorama, IVisualElementRenderer
- {
- static readonly System.Windows.DataTemplate PageTemplate;
-
- static readonly BindableProperty PageContainerProperty = BindableProperty.CreateAttached("PageContainer", typeof(PanoramaItem), typeof(CarouselPageRenderer), null);
-
- CarouselPage _page;
- BackgroundTracker<Control> _tracker;
-
- static CarouselPageRenderer()
- {
- PageTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["CarouselPage"];
- }
-
- public CarouselPageRenderer()
- {
- SetBinding(TitleProperty, new System.Windows.Data.Binding("Title"));
- }
-
- public UIElement ContainerElement
- {
- get { return this; }
- }
-
- public VisualElement Element
- {
- get { return _page; }
- }
-
- public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- return new SizeRequest(new Size(widthConstraint, heightConstraint));
- }
-
- public void SetElement(VisualElement element)
- {
- CarouselPage oldElement = _page;
- _page = (CarouselPage)element;
- _tracker = new BackgroundTracker<Control>(BackgroundProperty) { Model = _page, Element = this };
-
- DataContext = _page;
-
- SelectionChanged += OnSelectionChanged;
-
- OnPagesChanged(_page, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
-
- _page.PagesChanged += OnPagesChanged;
- _page.PropertyChanged += OnPropertyChanged;
-
- Loaded += (sender, args) => ((IPageController)_page).SendAppearing();
- Unloaded += (sender, args) => ((IPageController)_page).SendDisappearing();
-
- OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
- }
-
- protected virtual void OnElementChanged(VisualElementChangedEventArgs e)
- {
- EventHandler<VisualElementChangedEventArgs> changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- static PanoramaItem GetPageContainer(BindableObject bindable)
- {
- return (PanoramaItem)bindable.GetValue(PageContainerProperty);
- }
-
- void InsertItem(object item, int index, bool newItem)
- {
- DependencyObject pageContent = PageTemplate.LoadContent();
-
- var pageItem = (Page)item;
- PanoramaItem container = GetPageContainer(pageItem);
- if (container == null)
- {
- container = new PanoramaItem { DataContext = item, Content = pageContent };
-
- SetPageContainer(pageItem, container);
- }
-
- Items.Insert(index, container);
- }
-
- void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- e.Apply(InsertItem, RemoveItem, Reset);
- }
-
- void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == "CurrentPage")
- {
- ContentPage current = _page.CurrentPage;
- if (current == null)
- return;
-
- SetValue(SelectedItemProperty, GetPageContainer(current));
- OnItemsChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
- }
- }
-
- void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- var panoramaItem = (PanoramaItem)SelectedItem;
- if (panoramaItem == null)
- _page.CurrentPage = null;
- else
- _page.CurrentPage = (ContentPage)panoramaItem.DataContext;
- }
-
- void RemoveItem(object item, int index)
- {
- Items.RemoveAt(index);
- }
-
- void Reset()
- {
- Items.Clear();
-
- var i = 0;
- foreach (Page pageItem in _page.Children)
- InsertItem(pageItem, i++, true);
-
- ContentPage current = _page.CurrentPage;
- if (current != null)
- SetValue(SelectedItemProperty, GetPageContainer(current));
- }
-
- static void SetPageContainer(BindableObject bindable, PanoramaItem container)
- {
- bindable.SetValue(PageContainerProperty, container);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class CellControl : ContentControl
- {
- public static readonly DependencyProperty CellProperty = DependencyProperty.Register("Cell", typeof(object), typeof(CellControl),
- new PropertyMetadata((o, e) => ((CellControl)o).SetSource((Cell)e.OldValue, (Cell)e.NewValue)));
-
- public static readonly DependencyProperty ShowContextActionsProperty = DependencyProperty.Register("ShowContextActions", typeof(bool), typeof(CellControl), new PropertyMetadata(true));
-
- readonly PropertyChangedEventHandler _propertyChangedHandler;
-
- public CellControl()
- {
- Unloaded += (sender, args) =>
- {
- var cell = DataContext as ICellController;
- if (cell != null)
- cell.SendDisappearing();
- };
-
- _propertyChangedHandler = OnCellPropertyChanged;
- }
-
- public Cell Cell
- {
- get { return (Cell)GetValue(CellProperty); }
- set { SetValue(CellProperty, value); }
- }
-
- public bool ShowContextActions
- {
- get { return (bool)GetValue(ShowContextActionsProperty); }
- set { SetValue(ShowContextActionsProperty, value); }
- }
-
- System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- var renderer = Registrar.Registered.GetHandlerForObject<ICellRenderer>(cell);
- return renderer.GetTemplate(cell);
- }
-
- void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == "HasContextActions")
- SetupContextMenu();
- }
-
- void SetSource(Cell oldCell, Cell newCell)
- {
- if (oldCell != null)
- {
- oldCell.PropertyChanged -= _propertyChangedHandler;
- oldCell.SendDisappearing();
- }
-
- if (newCell != null)
- {
- newCell.SendAppearing();
-
- if (oldCell == null || oldCell.GetType() != newCell.GetType())
- ContentTemplate = GetTemplate(newCell);
-
- Content = newCell;
-
- SetupContextMenu();
-
- newCell.PropertyChanged += _propertyChangedHandler;
- }
- else
- Content = null;
- }
-
- void SetupContextMenu()
- {
- if (Content == null || !ShowContextActions)
- return;
-
- if (!Cell.HasContextActions)
- {
- if (VisualTreeHelper.GetChildrenCount(this) > 0)
- ContextMenuService.SetContextMenu(VisualTreeHelper.GetChild(this, 0), null);
-
- return;
- }
-
- ApplyTemplate();
-
- ContextMenu menu = new CustomContextMenu();
- menu.SetBinding(ItemsControl.ItemsSourceProperty, new System.Windows.Data.Binding("ContextActions"));
-
- ContextMenuService.SetContextMenu(VisualTreeHelper.GetChild(this, 0), menu);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Windows;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class HeightConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var val = (double)value;
- return val > 0 ? val : double.NaN;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-
- [Obsolete("CellTemplateSelector is obsolete as of version 1.3.5. Please use CellControl instead.")]
- public class CellTemplateSelector : DataTemplateSelector
- {
- public static readonly DependencyProperty SourceProperty = DependencyProperty.Register("Source", typeof(object), typeof(CellTemplateSelector),
- new PropertyMetadata((o, e) => ((CellTemplateSelector)o).SetSource(e.OldValue, e.NewValue)));
-
- public CellTemplateSelector()
- {
- Loaded += (sender, args) => SetBinding(SourceProperty, new System.Windows.Data.Binding());
- Unloaded += (sender, args) =>
- {
- var cell = DataContext as ICellController;
- if (cell != null)
- cell.SendDisappearing();
- };
- }
-
- public override System.Windows.DataTemplate SelectTemplate(object item, DependencyObject container)
- {
- var cell = item as Cell;
- if (cell == null)
- return null;
-
- var renderer = Registrar.Registered.GetHandlerForObject<ICellRenderer>(cell);
- return renderer.GetTemplate(cell);
- }
-
- void SetSource(object oldSource, object newSource)
- {
- var oldCell = oldSource as ICellController;
- var newCell = newSource as ICellController;
-
- if (oldCell != null)
- oldCell.SendDisappearing();
-
- if (newCell != null)
- newCell.SendAppearing();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class CollapseWhenEmptyConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var length = 0;
-
- var s = value as string;
- if (s != null)
- length = s.Length;
-
- if (value is int)
- length = (int)value;
-
- return length > 0 ? Visibility.Visible : Visibility.Collapsed;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-// ConcurrentDictionary.cs
-//
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-namespace Xamarin.Forms
-{
- internal class ConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IDictionary, ICollection, IEnumerable
- {
- readonly IEqualityComparer<TKey> _comparer;
-
- SplitOrderedList<TKey, KeyValuePair<TKey, TValue>> _internalDictionary;
-
- public ConcurrentDictionary() : this(EqualityComparer<TKey>.Default)
- {
- }
-
- public ConcurrentDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection) : this(collection, EqualityComparer<TKey>.Default)
- {
- }
-
- public ConcurrentDictionary(IEqualityComparer<TKey> comparer)
- {
- _comparer = comparer;
- _internalDictionary = new SplitOrderedList<TKey, KeyValuePair<TKey, TValue>>(comparer);
- }
-
- public ConcurrentDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection, IEqualityComparer<TKey> comparer) : this(comparer)
- {
- foreach (KeyValuePair<TKey, TValue> pair in collection)
- Add(pair.Key, pair.Value);
- }
-
- // Parameters unused
- public ConcurrentDictionary(int concurrencyLevel, int capacity) : this(EqualityComparer<TKey>.Default)
- {
- }
-
- public ConcurrentDictionary(int concurrencyLevel, IEnumerable<KeyValuePair<TKey, TValue>> collection, IEqualityComparer<TKey> comparer) : this(collection, comparer)
- {
- }
-
- // Parameters unused
- public ConcurrentDictionary(int concurrencyLevel, int capacity, IEqualityComparer<TKey> comparer) : this(comparer)
- {
- }
-
- public bool IsEmpty
- {
- get { return Count == 0; }
- }
-
- void ICollection.CopyTo(Array array, int startIndex)
- {
- var arr = array as KeyValuePair<TKey, TValue>[];
- if (arr == null)
- return;
-
- CopyTo(arr, startIndex, Count);
- }
-
- bool ICollection.IsSynchronized
- {
- get { return true; }
- }
-
- object ICollection.SyncRoot
- {
- get { return this; }
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> pair)
- {
- Add(pair.Key, pair.Value);
- }
-
- public void Clear()
- {
- // Pronk
- _internalDictionary = new SplitOrderedList<TKey, KeyValuePair<TKey, TValue>>(_comparer);
- }
-
- bool ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue> pair)
- {
- return ContainsKey(pair.Key);
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.CopyTo(KeyValuePair<TKey, TValue>[] array, int startIndex)
- {
- CopyTo(array, startIndex);
- }
-
- public int Count
- {
- get { return _internalDictionary.Count; }
- }
-
- bool ICollection<KeyValuePair<TKey, TValue>>.IsReadOnly
- {
- get { return false; }
- }
-
- bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> pair)
- {
- return Remove(pair.Key);
- }
-
- void IDictionary.Add(object key, object value)
- {
- if (!(key is TKey) || !(value is TValue))
- throw new ArgumentException("key or value aren't of correct type");
-
- Add((TKey)key, (TValue)value);
- }
-
- bool IDictionary.Contains(object key)
- {
- if (!(key is TKey))
- return false;
-
- return ContainsKey((TKey)key);
- }
-
- IDictionaryEnumerator IDictionary.GetEnumerator()
- {
- return new ConcurrentDictionaryEnumerator(GetEnumeratorInternal());
- }
-
- bool IDictionary.IsFixedSize
- {
- get { return false; }
- }
-
- bool IDictionary.IsReadOnly
- {
- get { return false; }
- }
-
- object IDictionary.this[object key]
- {
- get
- {
- if (!(key is TKey))
- throw new ArgumentException("key isn't of correct type", "key");
-
- return this[(TKey)key];
- }
- set
- {
- if (!(key is TKey) || !(value is TValue))
- throw new ArgumentException("key or value aren't of correct type");
-
- this[(TKey)key] = (TValue)value;
- }
- }
-
- ICollection IDictionary.Keys
- {
- get { return (ICollection)Keys; }
- }
-
- void IDictionary.Remove(object key)
- {
- if (!(key is TKey))
- return;
-
- Remove((TKey)key);
- }
-
- ICollection IDictionary.Values
- {
- get { return (ICollection)Values; }
- }
-
- void IDictionary<TKey, TValue>.Add(TKey key, TValue value)
- {
- Add(key, value);
- }
-
- public bool ContainsKey(TKey key)
- {
- CheckKey(key);
- KeyValuePair<TKey, TValue> dummy;
- return _internalDictionary.Find(Hash(key), key, out dummy);
- }
-
- public TValue this[TKey key]
- {
- get { return GetValue(key); }
- set { AddOrUpdate(key, value, value); }
- }
-
- public ICollection<TKey> Keys
- {
- get { return GetPart(kvp => kvp.Key); }
- }
-
- bool IDictionary<TKey, TValue>.Remove(TKey key)
- {
- return Remove(key);
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- CheckKey(key);
- KeyValuePair<TKey, TValue> pair;
- bool result = _internalDictionary.Find(Hash(key), key, out pair);
- value = pair.Value;
-
- return result;
- }
-
- public ICollection<TValue> Values
- {
- get { return GetPart(kvp => kvp.Value); }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumeratorInternal();
- }
-
- public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
- {
- return GetEnumeratorInternal();
- }
-
- public TValue AddOrUpdate(TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
- {
- CheckKey(key);
- if (addValueFactory == null)
- throw new ArgumentNullException("addValueFactory");
- if (updateValueFactory == null)
- throw new ArgumentNullException("updateValueFactory");
- return _internalDictionary.InsertOrUpdate(Hash(key), key, () => Make(key, addValueFactory(key)), e => Make(key, updateValueFactory(key, e.Value))).Value;
- }
-
- public TValue AddOrUpdate(TKey key, TValue addValue, Func<TKey, TValue, TValue> updateValueFactory)
- {
- return AddOrUpdate(key, _ => addValue, updateValueFactory);
- }
-
- public TValue GetOrAdd(TKey key, Func<TKey, TValue> valueFactory)
- {
- CheckKey(key);
- return _internalDictionary.InsertOrGet(Hash(key), key, Make(key, default(TValue)), () => Make(key, valueFactory(key))).Value;
- }
-
- public TValue GetOrAdd(TKey key, TValue value)
- {
- CheckKey(key);
- return _internalDictionary.InsertOrGet(Hash(key), key, Make(key, value), null).Value;
- }
-
- public KeyValuePair<TKey, TValue>[] ToArray()
- {
- // This is most certainly not optimum but there is
- // not a lot of possibilities
-
- return new List<KeyValuePair<TKey, TValue>>(this).ToArray();
- }
-
- public bool TryAdd(TKey key, TValue value)
- {
- CheckKey(key);
- return _internalDictionary.Insert(Hash(key), key, Make(key, value));
- }
-
- public bool TryRemove(TKey key, out TValue value)
- {
- CheckKey(key);
- KeyValuePair<TKey, TValue> data;
- bool result = _internalDictionary.Delete(Hash(key), key, out data);
- value = data.Value;
- return result;
- }
-
- public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)
- {
- CheckKey(key);
- return _internalDictionary.CompareExchange(Hash(key), key, Make(key, newValue), e => e.Value.Equals(comparisonValue));
- }
-
- void Add(TKey key, TValue value)
- {
- while (!TryAdd(key, value))
- ;
- }
-
- TValue AddOrUpdate(TKey key, TValue addValue, TValue updateValue)
- {
- CheckKey(key);
- return _internalDictionary.InsertOrUpdate(Hash(key), key, Make(key, addValue), Make(key, updateValue)).Value;
- }
-
- void CheckKey(TKey key)
- {
- if (key == null)
- throw new ArgumentNullException("key");
- }
-
- void CopyTo(KeyValuePair<TKey, TValue>[] array, int startIndex)
- {
- CopyTo(array, startIndex, Count);
- }
-
- void CopyTo(KeyValuePair<TKey, TValue>[] array, int startIndex, int num)
- {
- foreach (KeyValuePair<TKey, TValue> kvp in this)
- {
- array[startIndex++] = kvp;
-
- if (--num <= 0)
- return;
- }
- }
-
- IEnumerator<KeyValuePair<TKey, TValue>> GetEnumeratorInternal()
- {
- return _internalDictionary.GetEnumerator();
- }
-
- ICollection<T> GetPart<T>(Func<KeyValuePair<TKey, TValue>, T> extractor)
- {
- var temp = new List<T>();
-
- foreach (KeyValuePair<TKey, TValue> kvp in this)
- temp.Add(extractor(kvp));
-
- return new ReadOnlyCollection<T>(temp);
- }
-
- TValue GetValue(TKey key)
- {
- TValue temp;
- if (!TryGetValue(key, out temp))
- throw new KeyNotFoundException(key.ToString());
- return temp;
- }
-
- uint Hash(TKey key)
- {
- return (uint)_comparer.GetHashCode(key);
- }
-
- static KeyValuePair<T, V> Make<T, V>(T key, V value)
- {
- return new KeyValuePair<T, V>(key, value);
- }
-
- bool Remove(TKey key)
- {
- TValue dummy;
-
- return TryRemove(key, out dummy);
- }
-
- class ConcurrentDictionaryEnumerator : IDictionaryEnumerator
- {
- readonly IEnumerator<KeyValuePair<TKey, TValue>> _internalEnum;
-
- public ConcurrentDictionaryEnumerator(IEnumerator<KeyValuePair<TKey, TValue>> internalEnum)
- {
- _internalEnum = internalEnum;
- }
-
- public DictionaryEntry Entry
- {
- get
- {
- KeyValuePair<TKey, TValue> current = _internalEnum.Current;
- return new DictionaryEntry(current.Key, current.Value);
- }
- }
-
- public object Key
- {
- get { return _internalEnum.Current.Key; }
- }
-
- public object Value
- {
- get { return _internalEnum.Current.Value; }
- }
-
- public object Current
- {
- get { return Entry; }
- }
-
- public bool MoveNext()
- {
- return _internalEnum.MoveNext();
- }
-
- public void Reset()
- {
- _internalEnum.Reset();
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class ConvertExtensions
- {
- public static Brush ToBrush(this Color color)
- {
- return new SolidColorBrush(color.ToMediaColor());
- }
-
- public static System.Windows.Media.Color ToMediaColor(this Color color)
- {
- return System.Windows.Media.Color.FromArgb((byte)(color.A * 255), (byte)(color.R * 255), (byte)(color.G * 255), (byte)(color.B * 255));
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class CaseConverter : System.Windows.Data.IValueConverter
- {
- public bool ConvertToUpper { get; set; }
-
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value == null)
- return null;
-
- var v = (string)value;
- return ConvertToUpper ? v.ToUpper() : v.ToLower();
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ColorConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var color = (Color)value;
- var defaultColorKey = (string)parameter;
-
- Brush defaultBrush = defaultColorKey != null ? (Brush)System.Windows.Application.Current.Resources[defaultColorKey] : new SolidColorBrush(Colors.Transparent);
-
- return color == Color.Default ? defaultBrush : color.ToBrush();
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class HorizontalTextAlignmentConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var textAlign = (TextAlignment)value;
-
- return textAlign.ToNativeTextAlignment();
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Threading.Tasks;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ImageConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var source = (ImageSource)value;
- IImageSourceHandler handler;
-
- if (source != null && (handler = Internals.Registrar.Registered.GetHandlerForObject<IImageSourceHandler>(source)) != null)
- {
- Task<System.Windows.Media.ImageSource> task = handler.LoadImageAsync(source);
- return new AsyncValue<System.Windows.Media.ImageSource>(task, null);
- }
-
- return null;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class KeyboardConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var keyboard = (Keyboard)value;
- return keyboard.ToInputScope();
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-using System.Windows.Controls;
-using Microsoft.Phone.Controls;
-using WMenuItem = Microsoft.Phone.Controls.MenuItem;
-using WApplication = System.Windows.Application;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public sealed class CustomContextMenu : ContextMenu
- {
- protected override DependencyObject GetContainerForItemOverride()
- {
- var item = new WMenuItem();
- item.SetBinding(HeaderedItemsControl.HeaderProperty, new System.Windows.Data.Binding("Text") { Converter = (System.Windows.Data.IValueConverter)WApplication.Current.Resources["LowerConverter"] });
-
- item.Click += (sender, args) =>
- {
- IsOpen = false;
-
- var menuItem = item.DataContext as MenuItem;
- if (menuItem != null)
- menuItem.Activate();
- };
- return item;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-using System.Windows.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public abstract class DataTemplateSelector : ContentControl
- {
- public abstract System.Windows.DataTemplate SelectTemplate(object item, DependencyObject container);
-
- protected override void OnContentChanged(object oldContent, object newContent)
- {
- base.OnContentChanged(oldContent, newContent);
-
- ContentTemplate = SelectTemplate(newContent, this);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Reflection;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class DatePickerRenderer : ViewRenderer<DatePicker, Microsoft.Phone.Controls.DatePicker>
- {
- Brush _defaultBrush;
-
- protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
- {
- base.OnElementChanged(e);
-
- var datePicker = new Microsoft.Phone.Controls.DatePicker { Value = Element.Date };
-
- datePicker.Loaded += (sender, args) => {
- // The defaults from the control template won't be available
- // right away; we have to wait until after the template has been applied
- _defaultBrush = datePicker.Foreground;
- UpdateTextColor();
- };
-
- datePicker.ValueChanged += DatePickerOnValueChanged;
- SetNativeControl(datePicker);
-
- UpdateFormatString();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == DatePicker.DateProperty.PropertyName)
- Control.Value = Element.Date;
- else if (e.PropertyName == DatePicker.FormatProperty.PropertyName)
- UpdateFormatString();
- else if (e.PropertyName == DatePicker.TextColorProperty.PropertyName)
- UpdateTextColor();
- }
-
- internal override void OnModelFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
- {
- Microsoft.Phone.Controls.DatePicker control = Control;
- if (control == null)
- return;
-
- if (args.Focus)
- {
- typeof(DateTimePickerBase).InvokeMember("OpenPickerPage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, Type.DefaultBinder, control, null);
- args.Result = true;
- }
- else
- {
- UnfocusControl(control);
- args.Result = true;
- }
- }
-
- void DatePickerOnValueChanged(object sender, DateTimeValueChangedEventArgs dateTimeValueChangedEventArgs)
- {
- if (Control.Value.HasValue)
- ((IElementController)Element).SetValueFromRenderer(DatePicker.DateProperty, Control.Value.Value);
- }
-
- void UpdateFormatString()
- {
- Control.ValueStringFormat = "{0:" + Element.Format + "}";
- }
-
- void UpdateTextColor()
- {
- Color color = Element.TextColor;
- Control.Foreground = color.IsDefault ? (_defaultBrush ?? color.ToBrush()) : color.ToBrush();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO.IsolatedStorage;
-using System.Runtime.Serialization;
-using System.Threading.Tasks;
-using System.Xml;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal class Deserializer : IDeserializer
- {
- const string PropertyStoreFile = "PropertyStore.forms";
-
- public Task<IDictionary<string, object>> DeserializePropertiesAsync()
- {
- // Deserialize property dictionary to local storage
- // Make sure to use Internal
- return Task.Run(() =>
- {
- using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
- using (IsolatedStorageFileStream stream = store.OpenFile(PropertyStoreFile, System.IO.FileMode.OpenOrCreate))
- using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max))
- {
- if (stream.Length == 0)
- return null;
-
- try
- {
- var dcs = new DataContractSerializer(typeof(Dictionary<string, object>));
- return (IDictionary<string, object>)dcs.ReadObject(reader);
- }
- catch (Exception e)
- {
- Debug.WriteLine("Could not deserialize properties: " + e.Message);
- }
- }
-
- return null;
- });
- }
-
- public Task SerializePropertiesAsync(IDictionary<string, object> properties)
- {
- properties = new Dictionary<string, object>(properties);
- // Serialize property dictionary to local storage
- // Make sure to use Internal
- return Task.Run(() =>
- {
- var success = false;
- using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
- using (IsolatedStorageFileStream stream = store.OpenFile(PropertyStoreFile + ".tmp", System.IO.FileMode.OpenOrCreate))
- using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(stream))
- {
- try
- {
- var dcs = new DataContractSerializer(typeof(Dictionary<string, object>));
- dcs.WriteObject(writer, properties);
- writer.Flush();
- success = true;
- }
- catch (Exception e)
- {
- Debug.WriteLine("Could not serialize properties: " + e.Message);
- }
- }
-
- if (!success)
- return;
- using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
- {
- try
- {
- if (store.FileExists(PropertyStoreFile))
- store.DeleteFile(PropertyStoreFile);
- store.MoveFile(PropertyStoreFile + ".tmp", PropertyStoreFile);
- }
- catch (Exception e)
- {
- Debug.WriteLine("Could not move new serialized property file over old: " + e.Message);
- }
- }
- });
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class EditorRenderer : ViewRenderer<Editor, TextBox>
- {
- bool _fontApplied;
-
- IEditorController ElementController => Element;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
- {
- base.OnElementChanged(e);
-
- var textBox = new TextBox { VerticalScrollBarVisibility = ScrollBarVisibility.Visible, TextWrapping = TextWrapping.Wrap, AcceptsReturn = true };
-
- SetNativeControl(textBox);
-
- UpdateText();
- UpdateInputScope();
- UpdateTextColor();
-
- Control.LostFocus += (sender, args) => ElementController.SendCompleted();
-
- textBox.TextChanged += TextBoxOnTextChanged;
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Editor.TextProperty.PropertyName)
- UpdateText();
- else if (e.PropertyName == InputView.KeyboardProperty.PropertyName)
- UpdateInputScope();
- else if (e.PropertyName == Editor.TextColorProperty.PropertyName)
- UpdateTextColor();
- else if (e.PropertyName == Editor.FontAttributesProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Editor.FontFamilyProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Editor.FontSizeProperty.PropertyName)
- UpdateFont();
- }
-
- protected override void UpdateBackgroundColor()
- {
- Control.Background = Element.BackgroundColor == Color.Default ? (Brush)System.Windows.Application.Current.Resources["PhoneTextBoxBrush"] : Element.BackgroundColor.ToBrush();
- }
-
- void TextBoxOnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs textChangedEventArgs)
- {
- ((IElementController)Element).SetValueFromRenderer(Editor.TextProperty, Control.Text);
- }
-
- void UpdateFont()
- {
- if (Control == null)
- return;
-
- Editor editor = Element;
-
- bool editorIsDefault = editor.FontFamily == null && editor.FontSize == Device.GetNamedSize(NamedSize.Default, typeof(Editor), true) && editor.FontAttributes == FontAttributes.None;
- if (editor == null || (editorIsDefault && !_fontApplied))
- return;
-
- if (editorIsDefault)
- {
- Control.ClearValue(System.Windows.Controls.Control.FontStyleProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontSizeProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontFamilyProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontWeightProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontStretchProperty);
- }
- else
- Control.ApplyFont(editor);
-
- _fontApplied = true;
- }
-
- void UpdateInputScope()
- {
- Control.InputScope = Element.Keyboard.ToInputScope();
- }
-
- void UpdateText()
- {
- string newText = Element.Text ?? "";
-
- if (Control.Text == newText)
- return;
-
- Control.Text = newText;
- Control.SelectionStart = Control.Text.Length;
- }
-
- void UpdateTextColor()
- {
- Color textColor = Element.TextColor;
-
- if (textColor.IsDefault || !Element.IsEnabled)
- Control.ClearValue(System.Windows.Controls.Control.ForegroundProperty);
- else
- Control.Foreground = textColor.ToBrush();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Media;
-using Xamarin.Forms.Internals;
-using static System.String;
-using WControl = System.Windows.Controls.Control;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public static class KeyboardExtensions
- {
- public static InputScope ToInputScope(this Keyboard self)
- {
- var result = new InputScope();
- var name = new InputScopeName();
- if (self == Keyboard.Default)
- name.NameValue = InputScopeNameValue.Default;
- else if (self == Keyboard.Chat)
- name.NameValue = InputScopeNameValue.Chat;
- else if (self == Keyboard.Email)
- name.NameValue = InputScopeNameValue.EmailNameOrAddress;
- else if (self == Keyboard.Numeric)
- name.NameValue = InputScopeNameValue.Number;
- else if (self == Keyboard.Telephone)
- name.NameValue = InputScopeNameValue.TelephoneNumber;
- else if (self == Keyboard.Text)
- name.NameValue = InputScopeNameValue.Text;
- else if (self == Keyboard.Url)
- name.NameValue = InputScopeNameValue.Url;
- else if (self is CustomKeyboard)
- {
- var custom = (CustomKeyboard)self;
- bool capitalizedSentenceEnabled = (custom.Flags & KeyboardFlags.CapitalizeSentence) == KeyboardFlags.CapitalizeSentence;
- bool spellcheckEnabled = (custom.Flags & KeyboardFlags.Spellcheck) == KeyboardFlags.Spellcheck;
- bool suggestionsEnabled = (custom.Flags & KeyboardFlags.Suggestions) == KeyboardFlags.Suggestions;
-
- if (!capitalizedSentenceEnabled && !spellcheckEnabled && !suggestionsEnabled)
- name.NameValue = InputScopeNameValue.Default;
- if (!capitalizedSentenceEnabled && !spellcheckEnabled && suggestionsEnabled)
- name.NameValue = InputScopeNameValue.Search;
- if (!capitalizedSentenceEnabled && spellcheckEnabled && !suggestionsEnabled)
- {
- Debug.WriteLine("Keyboard: Suggestions cannot be disabled in Windows Phone if spellcheck is enabled");
- name.NameValue = InputScopeNameValue.Search;
- }
- if (!capitalizedSentenceEnabled && spellcheckEnabled && suggestionsEnabled)
- name.NameValue = InputScopeNameValue.Search;
- if (capitalizedSentenceEnabled && !spellcheckEnabled && !suggestionsEnabled)
- {
- Debug.WriteLine("Keyboard: Suggestions cannot be disabled in Windows Phone if auto Capitalization is enabled");
- name.NameValue = InputScopeNameValue.Chat;
- }
- if (capitalizedSentenceEnabled && !spellcheckEnabled && suggestionsEnabled)
- name.NameValue = InputScopeNameValue.Chat;
- if (capitalizedSentenceEnabled && spellcheckEnabled && !suggestionsEnabled)
- {
- Debug.WriteLine("Keyboard: Suggestions cannot be disabled in Windows Phone if spellcheck is enabled");
- name.NameValue = InputScopeNameValue.Text;
- }
- if (capitalizedSentenceEnabled && spellcheckEnabled && suggestionsEnabled)
- name.NameValue = InputScopeNameValue.Text;
- }
- else
- {
- // Should never happens
- name.NameValue = InputScopeNameValue.Default;
- }
- result.Names.Add(name);
- return result;
- }
- }
-
- public class EntryRenderer : ViewRenderer<Entry, FormsPhoneTextBox>
- {
- bool _fontApplied;
- bool _ignoreTextChange;
- Brush _placeholderDefaultBrush;
- Brush _textDefaultBrush;
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- if (Children.Count == 0)
- return new SizeRequest();
-
- var constraint = new System.Windows.Size(widthConstraint, heightConstraint);
-
- FormsPhoneTextBox child = Control;
-
- double oldWidth = child.Width;
- double oldHeight = child.Height;
-
- child.Height = double.NaN;
- child.Width = double.NaN;
-
- child.Measure(constraint);
- var result = new Size(Math.Ceiling(child.DesiredSize.Width), Math.Ceiling(child.DesiredSize.Height));
-
- child.Width = oldWidth;
- child.Height = oldHeight;
-
- return new SizeRequest(result);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
- {
- base.OnElementChanged(e);
-
- var textBox = new FormsPhoneTextBox();
-
- SetNativeControl(textBox);
-
- UpdateInputScope();
- UpdateIsPassword();
- UpdateText();
- UpdatePlaceholder();
- UpdateColor();
- UpdateFont();
- UpdateAlignment();
- UpdatePlaceholderColor();
- UpdateIsEnabled();
-
- Control.LostFocus += OnTextBoxUnfocused;
- Control.TextChanged += TextBoxOnTextChanged;
- Control.KeyUp += TextBoxOnKeyUp;
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Entry.TextProperty.PropertyName)
- UpdateText();
- else if (e.PropertyName == Entry.PlaceholderProperty.PropertyName)
- UpdatePlaceholder();
- else if (e.PropertyName == Entry.IsPasswordProperty.PropertyName)
- UpdateIsPassword();
- else if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
- UpdateIsEnabled();
- else if (e.PropertyName == Entry.TextColorProperty.PropertyName)
- UpdateColor();
- else if (e.PropertyName == InputView.KeyboardProperty.PropertyName)
- UpdateInputScope();
- else if (e.PropertyName == Entry.FontAttributesProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Entry.FontFamilyProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Entry.FontSizeProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == Entry.HorizontalTextAlignmentProperty.PropertyName)
- UpdateAlignment();
- else if (e.PropertyName == Entry.PlaceholderColorProperty.PropertyName)
- UpdatePlaceholderColor();
- }
-
- protected override void UpdateBackgroundColor()
- {
- Control.Background = Element.BackgroundColor.IsDefault ? (Brush)System.Windows.Application.Current.Resources["PhoneTextBoxBrush"] : Element.BackgroundColor.ToBrush();
- }
-
- internal override void OnModelFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
- {
- if (args.Focus)
- args.Result = Control.Focus();
- else
- {
- UnfocusControl(Control);
- args.Result = true;
- }
- }
-
- void OnTextBoxUnfocused(object sender, RoutedEventArgs e)
- {
- if (Element.TextColor.IsDefault)
- return;
-
- if (!IsNullOrEmpty(Element.Text))
- Control.Foreground = Element.TextColor.ToBrush();
- }
-
- void TextBoxOnKeyUp(object sender, KeyEventArgs keyEventArgs)
- {
- if (keyEventArgs.Key == Key.Enter)
- ((IEntryController)Element).SendCompleted();
- }
-
- void TextBoxOnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs textChangedEventArgs)
- {
- // Signal to the UpdateText method that the change to TextProperty doesn't need to update the control
- // This prevents the cursor position from getting lost
- _ignoreTextChange = true;
- ((IElementController)Element).SetValueFromRenderer(Entry.TextProperty, Control.Text);
-
- // If an Entry.TextChanged handler modified the value of the Entry's text, the values could now be
- // out-of-sync; re-sync them and force the TextBox cursor to the end of the text
- string entryText = Element.Text;
- if (Control.Text != entryText)
- {
- Control.Text = entryText;
- Control.SelectionStart = Control.Text.Length;
- }
-
- _ignoreTextChange = false;
- }
-
- void UpdateAlignment()
- {
- if (Control == null)
- return;
-
- Control.TextAlignment = Element.HorizontalTextAlignment.ToNativeTextAlignment();
- }
-
- void UpdateColor()
- {
- if (Control == null)
- return;
-
- BrushHelpers.UpdateColor(Element.TextColor, ref _textDefaultBrush,
- () => Control.Foreground, brush => Control.Foreground = brush);
-
- // Force the PhoneTextBox control to do some internal bookkeeping
- // so the colors change immediately and remain changed when the control gets focus
- Control.OnApplyTemplate();
- }
-
- void UpdateFont()
- {
- if (Control == null)
- return;
-
- Entry entry = Element;
-
- if (entry == null)
- return;
-
- bool entryIsDefault = entry.FontFamily == null && entry.FontSize == Device.GetNamedSize(NamedSize.Default, typeof(Entry), true) && entry.FontAttributes == FontAttributes.None;
-
- if (entryIsDefault && !_fontApplied)
- return;
-
- if (entryIsDefault)
- {
- Control.ClearValue(WControl.FontStyleProperty);
- Control.ClearValue(WControl.FontSizeProperty);
- Control.ClearValue(WControl.FontFamilyProperty);
- Control.ClearValue(WControl.FontWeightProperty);
- Control.ClearValue(WControl.FontStretchProperty);
- }
- else
- Control.ApplyFont(entry);
-
- _fontApplied = true;
- }
-
- void UpdateInputScope()
- {
- Control.InputScope = Element.Keyboard.ToInputScope();
- }
-
- void UpdateIsEnabled()
- {
- Control.IsEnabled = Element.IsEnabled;
- }
-
- void UpdateIsPassword()
- {
- Control.IsPassword = Element.IsPassword;
- }
-
- void UpdatePlaceholder()
- {
- Control.Hint = Element.Placeholder ?? "";
- }
-
- void UpdatePlaceholderColor()
- {
- BrushHelpers.UpdateColor(Element.PlaceholderColor, ref _placeholderDefaultBrush,
- () => Control.PlaceholderForegroundBrush, brush => Control.PlaceholderForegroundBrush = brush);
- }
-
- void UpdateText()
- {
- // If the text property has changed because TextBoxOnTextChanged called SetValueFromRenderer,
- // we don't want to re-update the text and reset the cursor position
- if (_ignoreTextChange)
- return;
-
- if (Control.Text == Element.Text)
- return;
-
- Control.Text = Element.Text ?? "";
- Control.Select(Control.Text.Length, 0);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms
-{
- [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
- public sealed class ExportCellAttribute : HandlerAttribute
- {
- public ExportCellAttribute(Type handler, Type target) : base(handler, target)
- {
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms
-{
- [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
- public sealed class ExportImageSourceHandlerAttribute : HandlerAttribute
- {
- public ExportImageSourceHandlerAttribute(Type handler, Type target) : base(handler, target)
- {
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms
-{
- [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
- public sealed class ExportRendererAttribute : HandlerAttribute
- {
- public ExportRendererAttribute(Type handler, Type target) : base(handler, target)
- {
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class Extensions
- {
- public static DeviceOrientation ToDeviceOrientation(this PageOrientation pageOrientation)
- {
- switch (pageOrientation)
- {
- case PageOrientation.None:
- return DeviceOrientation.Other;
- case PageOrientation.Portrait:
- return DeviceOrientation.Portrait;
- case PageOrientation.Landscape:
- return DeviceOrientation.Landscape;
- case PageOrientation.PortraitUp:
- return DeviceOrientation.PortraitUp;
- case PageOrientation.PortraitDown:
- return DeviceOrientation.PortraitDown;
- case PageOrientation.LandscapeRight:
- return DeviceOrientation.LandscapeRight;
- case PageOrientation.LandscapeLeft:
- return DeviceOrientation.LandscapeLeft;
- default:
- return DeviceOrientation.Other;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Media;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public static class FontExtensions
- {
- public static void ApplyFont(this Control self, Font font)
- {
- if (font.UseNamedSize)
- {
- switch (font.NamedSize)
- {
- case NamedSize.Micro:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"] - 3;
- break;
- case NamedSize.Small:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"];
- break;
- case NamedSize.Medium:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeMedium"];
- // use medium instead of normal as this is the default for non-labels
- break;
- case NamedSize.Large:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeLarge"];
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
- else
- self.FontSize = font.FontSize;
-
- if (!string.IsNullOrEmpty(font.FontFamily))
- self.FontFamily = new FontFamily(font.FontFamily);
- else
- self.FontFamily = (FontFamily)System.Windows.Application.Current.Resources["PhoneFontFamilySemiBold"];
-
- if (font.FontAttributes.HasFlag(FontAttributes.Italic))
- self.FontStyle = FontStyles.Italic;
- else
- self.FontStyle = FontStyles.Normal;
-
- if (font.FontAttributes.HasFlag(FontAttributes.Bold))
- self.FontWeight = FontWeights.Bold;
- else
- self.FontWeight = FontWeights.Normal;
- }
-
- public static void ApplyFont(this TextBlock self, Font font)
- {
- if (font.UseNamedSize)
- {
- switch (font.NamedSize)
- {
- case NamedSize.Micro:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"] - 3;
- break;
- case NamedSize.Small:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"];
- break;
- case NamedSize.Medium:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeNormal"];
- // use normal instead of medium as this is the default
- break;
- case NamedSize.Large:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeLarge"];
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
- else
- self.FontSize = font.FontSize;
-
- if (!string.IsNullOrEmpty(font.FontFamily))
- self.FontFamily = new FontFamily(font.FontFamily);
- else
- self.FontFamily = (FontFamily)System.Windows.Application.Current.Resources["PhoneFontFamilyNormal"];
-
- if (font.FontAttributes.HasFlag(FontAttributes.Italic))
- self.FontStyle = FontStyles.Italic;
- else
- self.FontStyle = FontStyles.Normal;
-
- if (font.FontAttributes.HasFlag(FontAttributes.Bold))
- self.FontWeight = FontWeights.Bold;
- else
- self.FontWeight = FontWeights.Normal;
- }
-
- public static void ApplyFont(this System.Windows.Documents.TextElement self, Font font)
- {
- if (font.UseNamedSize)
- {
- switch (font.NamedSize)
- {
- case NamedSize.Micro:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"] - 3;
- break;
- case NamedSize.Small:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"];
- break;
- case NamedSize.Medium:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeNormal"];
- // use normal instead of medium as this is the default
- break;
- case NamedSize.Large:
- self.FontSize = (double)System.Windows.Application.Current.Resources["PhoneFontSizeLarge"];
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
- else
- self.FontSize = font.FontSize;
-
- if (!string.IsNullOrEmpty(font.FontFamily))
- self.FontFamily = new FontFamily(font.FontFamily);
- else
- self.FontFamily = (FontFamily)System.Windows.Application.Current.Resources["PhoneFontFamilyNormal"];
-
- if (font.FontAttributes.HasFlag(FontAttributes.Italic))
- self.FontStyle = FontStyles.Italic;
- else
- self.FontStyle = FontStyles.Normal;
-
- if (font.FontAttributes.HasFlag(FontAttributes.Bold))
- self.FontWeight = FontWeights.Bold;
- else
- self.FontWeight = FontWeights.Normal;
- }
-
- internal static void ApplyFont(this Control self, IFontElement element)
- {
- self.FontSize = element.FontSize;
-
- if (!string.IsNullOrEmpty(element.FontFamily))
- self.FontFamily = new FontFamily(element.FontFamily);
- else
- self.FontFamily = (FontFamily)System.Windows.Application.Current.Resources["PhoneFontFamilySemiBold"];
-
- if (element.FontAttributes.HasFlag(FontAttributes.Italic))
- self.FontStyle = FontStyles.Italic;
- else
- self.FontStyle = FontStyles.Normal;
-
- if (element.FontAttributes.HasFlag(FontAttributes.Bold))
- self.FontWeight = FontWeights.Bold;
- else
- self.FontWeight = FontWeights.Normal;
- }
-
- internal static bool IsDefault(this IFontElement self)
- {
- return self.FontFamily == null && self.FontSize == Device.GetNamedSize(NamedSize.Default, typeof(Label), true) && self.FontAttributes == FontAttributes.None;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using System.Windows;
-using System.Windows.Interop;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-using Xamarin.Forms.Platform.WinPhone;
-
-using Expression = System.Linq.Expressions.Expression;
-
-
-namespace Xamarin.Forms
-{
- public static class Forms
- {
- static bool s_isInitialized;
-
- public static UIElement ConvertPageToUIElement(this Page page, PhoneApplicationPage applicationPage)
- {
- var application = new DefaultApplication();
- application.MainPage = page;
- var result = new Platform.WinPhone.Platform(applicationPage);
- result.SetPage(page);
- return result.GetCanvas();
- }
-
- public static void Init()
- {
- if (s_isInitialized)
- return;
-
- // Needed to prevent stripping of System.Windows.Interactivity
- // which is current only referenced in the XAML DataTemplates
- var eventTrigger = new System.Windows.Interactivity.EventTrigger();
-
- string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
-
- System.Windows.Application.Current.Resources.MergedDictionaries.Add(new System.Windows.ResourceDictionary
- {
- Source = new Uri(string.Format("/{0};component/WPResources.xaml", assemblyName), UriKind.Relative)
- });
-
- var accent = System.Windows.Application.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- System.Windows.Media.Color color = accent.Color;
- Color.SetAccent(Color.FromRgba(color.R, color.G, color.B, color.A));
-
- Log.Listeners.Add(new DelegateLogListener((c, m) => Console.WriteLine("[{0}] {1}", m, c)));
-
- Device.PlatformServices = new WP8PlatformServices();
- Device.Info = new WP8DeviceInfo();
-
- Registrar.RegisterAll(new[] { typeof(ExportRendererAttribute), typeof(ExportCellAttribute), typeof(ExportImageSourceHandlerAttribute) });
-
- Ticker.SetDefault(new WinPhoneTicker());
-
- Device.SetIdiom(TargetIdiom.Phone);
-
- ExpressionSearch.Default = new WinPhoneExpressionSearch();
-
- s_isInitialized = true;
- }
-
- class DefaultApplication : Application
- {
- }
-
- internal class WP8DeviceInfo : DeviceInfo
- {
- internal const string BWPorientationChangedName = "Xamarin.WP8.OrientationChanged";
- readonly double _scalingFactor;
-
- public WP8DeviceInfo()
- {
- MessagingCenter.Subscribe(this, BWPorientationChangedName, (FormsApplicationPage page, DeviceOrientation orientation) => { CurrentOrientation = orientation; });
-
- Content content = System.Windows.Application.Current.Host.Content;
-
- // Scaling Factor for Windows Phone 8 is relative to WVGA: https://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx
- _scalingFactor = content.ScaleFactor / 100d;
-
- PixelScreenSize = new Size(content.ActualWidth * _scalingFactor, content.ActualHeight * _scalingFactor);
- ScaledScreenSize = new Size(content.ActualWidth, content.ActualHeight);
- }
-
- public override Size PixelScreenSize { get; }
-
- public override Size ScaledScreenSize { get; }
-
- public override double ScalingFactor
- {
- get { return _scalingFactor; }
- }
-
- protected override void Dispose(bool disposing)
- {
- MessagingCenter.Unsubscribe<FormsApplicationPage, DeviceOrientation>(this, BWPorientationChangedName);
- base.Dispose(disposing);
- }
- }
-
- sealed class WinPhoneExpressionSearch : IExpressionSearch
- {
- List<object> _results;
- Type _targeType;
-
- public List<T> FindObjects<T>(Expression expression) where T : class
- {
- _results = new List<object>();
- _targeType = typeof(T);
-
- Visit(expression);
-
- return _results.Select(o => o as T).ToList();
- }
-
- void Visit(Expression expression)
- {
- if (expression == null)
- return;
-
- switch (expression.NodeType)
- {
- case ExpressionType.Negate:
- case ExpressionType.NegateChecked:
- case ExpressionType.Not:
- case ExpressionType.Convert:
- case ExpressionType.ConvertChecked:
- case ExpressionType.ArrayLength:
- case ExpressionType.Quote:
- case ExpressionType.TypeAs:
- case ExpressionType.UnaryPlus:
- Visit(((UnaryExpression)expression).Operand);
- break;
- case ExpressionType.Add:
- case ExpressionType.AddChecked:
- case ExpressionType.Subtract:
- case ExpressionType.SubtractChecked:
- case ExpressionType.Multiply:
- case ExpressionType.MultiplyChecked:
- case ExpressionType.Divide:
- case ExpressionType.Modulo:
- case ExpressionType.Power:
- case ExpressionType.And:
- case ExpressionType.AndAlso:
- case ExpressionType.Or:
- case ExpressionType.OrElse:
- case ExpressionType.LessThan:
- case ExpressionType.LessThanOrEqual:
- case ExpressionType.GreaterThan:
- case ExpressionType.GreaterThanOrEqual:
- case ExpressionType.Equal:
- case ExpressionType.NotEqual:
- case ExpressionType.Coalesce:
- case ExpressionType.ArrayIndex:
- case ExpressionType.RightShift:
- case ExpressionType.LeftShift:
- case ExpressionType.ExclusiveOr:
- var binary = (BinaryExpression)expression;
- Visit(binary.Left);
- Visit(binary.Right);
- Visit(binary.Conversion);
- break;
- case ExpressionType.TypeIs:
- Visit(((TypeBinaryExpression)expression).Expression);
- break;
- case ExpressionType.Conditional:
- var conditional = (ConditionalExpression)expression;
- Visit(conditional.Test);
- Visit(conditional.IfTrue);
- Visit(conditional.IfFalse);
- break;
- case ExpressionType.MemberAccess:
- VisitMemberAccess((MemberExpression)expression);
- break;
- case ExpressionType.Call:
- var methodCall = (MethodCallExpression)expression;
- Visit(methodCall.Object);
- VisitList(methodCall.Arguments, Visit);
- break;
- case ExpressionType.Lambda:
- Visit(((LambdaExpression)expression).Body);
- break;
- case ExpressionType.New:
- VisitList(((NewExpression)expression).Arguments, Visit);
- break;
- case ExpressionType.NewArrayInit:
- case ExpressionType.NewArrayBounds:
- VisitList(((NewArrayExpression)expression).Expressions, Visit);
- break;
- case ExpressionType.Invoke:
- var invocation = (InvocationExpression)expression;
- VisitList(invocation.Arguments, Visit);
- Visit(invocation.Expression);
- break;
- case ExpressionType.MemberInit:
- var init = (MemberInitExpression)expression;
- VisitList(init.NewExpression.Arguments, Visit);
- VisitList(init.Bindings, VisitBinding);
- break;
- case ExpressionType.ListInit:
- var init1 = (ListInitExpression)expression;
- VisitList(init1.NewExpression.Arguments, Visit);
- VisitList(init1.Initializers, initializer => VisitList(initializer.Arguments, Visit));
- break;
- case ExpressionType.Constant:
- break;
- default:
- throw new ArgumentException(string.Format("Unhandled expression type: '{0}'", expression.NodeType));
- }
- }
-
- void VisitBinding(MemberBinding binding)
- {
- switch (binding.BindingType)
- {
- case MemberBindingType.Assignment:
- Visit(((MemberAssignment)binding).Expression);
- break;
- case MemberBindingType.MemberBinding:
- VisitList(((MemberMemberBinding)binding).Bindings, VisitBinding);
- break;
- case MemberBindingType.ListBinding:
- VisitList(((MemberListBinding)binding).Initializers, initializer => VisitList(initializer.Arguments, Visit));
- break;
- default:
- throw new ArgumentException(string.Format("Unhandled binding type '{0}'", binding.BindingType));
- }
- }
-
- static void VisitList<TList>(IEnumerable<TList> list, Action<TList> visitor)
- {
- foreach (TList element in list)
- visitor(element);
- }
-
- void VisitMemberAccess(MemberExpression member)
- {
- if (member.Expression is ConstantExpression && member.Member is FieldInfo)
- {
- object container = ((ConstantExpression)member.Expression).Value;
- object value = ((FieldInfo)member.Member).GetValue(container);
-
- if (_targeType.IsInstanceOfType(value))
- _results.Add(value);
- }
- Visit(member.Expression);
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class FormsApplicationPage : PhoneApplicationPage
- {
- Application _application;
- Platform _platform;
-
- protected FormsApplicationPage()
- {
- PhoneApplicationService.Current.Launching += OnLaunching;
- PhoneApplicationService.Current.Activated += OnActivated;
- PhoneApplicationService.Current.Deactivated += OnDeactivated;
- PhoneApplicationService.Current.Closing += OnClosing;
-
- MessagingCenter.Send(this, Forms.WP8DeviceInfo.BWPorientationChangedName, Orientation.ToDeviceOrientation());
- OrientationChanged += OnOrientationChanged;
- //DeserializePropertyStore ();
- }
-
- protected void LoadApplication(Application application)
- {
- Application.SetCurrentApplication(application);
- application.PropertyChanged += ApplicationOnPropertyChanged;
- _application = application;
-
- // Hack around the fact that OnLaunching will haev already happened by this point, sad but needed.
- application.SendStart();
-
- SetMainPage();
- }
-
- void ApplicationOnPropertyChanged(object sender, PropertyChangedEventArgs args)
- {
- if (args.PropertyName == "MainPage")
- SetMainPage();
- }
-
- void OnActivated(object sender, ActivatedEventArgs e)
- {
- // TODO : figure out consistency of get this to fire
- // Check whether tombstoned (terminated, but OS retains information about navigation state and state dictionarys) or dormant
- _application.SendResume();
- }
-
- // when app gets tombstoned, user press back past first page
- async void OnClosing(object sender, ClosingEventArgs e)
- {
- // populate isolated storage.
- //SerializePropertyStore ();
- await _application.SendSleepAsync();
- }
-
- async void OnDeactivated(object sender, DeactivatedEventArgs e)
- {
- // populate state dictionaries, properties
- //SerializePropertyStore ();
- await _application.SendSleepAsync();
- }
-
- void OnLaunching(object sender, LaunchingEventArgs e)
- {
- // TODO : not currently firing, is fired before MainPage ctor is called
- _application.SendStart();
- }
-
- void OnOrientationChanged(object sender, OrientationChangedEventArgs e)
- {
- MessagingCenter.Send(this, Forms.WP8DeviceInfo.BWPorientationChangedName, e.Orientation.ToDeviceOrientation());
- }
-
- void SetMainPage()
- {
- if (_platform == null)
- _platform = new Platform(this);
-
- _platform.SetPage(_application.MainPage);
-
- if (!ReferenceEquals(Content, _platform))
- Content = _platform.GetCanvas();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class FormsListPicker : ListPicker
- {
- internal static readonly DependencyProperty ListPickerModeChangedProperty = DependencyProperty.Register("ListPickerMode", typeof(ListPickerMode), typeof(FormsListPicker),
- new PropertyMetadata(ModeChanged));
-
- protected virtual void OnListPickerModeChanged(DependencyPropertyChangedEventArgs args)
- {
- ListPickerModeChanged?.Invoke(this, args);
- }
-
- internal event EventHandler<DependencyPropertyChangedEventArgs> ListPickerModeChanged;
-
- static void ModeChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- var listPicker = dependencyObject as FormsListPicker;
- listPicker?.OnListPickerModeChanged(dependencyPropertyChangedEventArgs);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- /// <summary>
- /// An intermediate class for injecting bindings for things the default
- /// textbox doesn't allow us to bind/modify
- /// </summary>
- public class FormsPhoneTextBox : PhoneTextBox
- {
- const char ObfuscationCharacter = '●';
-
- public static readonly DependencyProperty PlaceholderForegroundBrushProperty = DependencyProperty.Register("PlaceholderForegroundBrush", typeof(Brush), typeof(FormsPhoneTextBox),
- new PropertyMetadata(default(Brush)));
-
- public static readonly DependencyProperty IsPasswordProperty = DependencyProperty.Register("IsPassword", typeof(bool), typeof(FormsPhoneTextBox),
- new PropertyMetadata(default(bool), OnIsPasswordChanged));
-
- public new static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(FormsPhoneTextBox), new PropertyMetadata("", TextPropertyChanged));
-
- protected internal static readonly DependencyProperty DisabledTextProperty = DependencyProperty.Register("DisabledText", typeof(string), typeof(FormsPhoneTextBox), new PropertyMetadata(""));
-
- static InputScope s_passwordInputScope;
- InputScope _cachedInputScope;
- CancellationTokenSource _cts;
- bool _internalChangeFlag;
-
- public FormsPhoneTextBox()
- {
- TextChanged += OnTextChanged;
- SelectionChanged += OnSelectionChanged;
- }
-
- public bool IsPassword
- {
- get { return (bool)GetValue(IsPasswordProperty); }
- set { SetValue(IsPasswordProperty, value); }
- }
-
- public Brush PlaceholderForegroundBrush
- {
- get { return (Brush)GetValue(PlaceholderForegroundBrushProperty); }
- set { SetValue(PlaceholderForegroundBrushProperty, value); }
- }
-
- public new string Text
- {
- get { return (string)GetValue(TextProperty); }
- set { SetValue(TextProperty, value); }
- }
-
- protected internal string DisabledText
- {
- get { return (string)GetValue(DisabledTextProperty); }
- set { SetValue(DisabledTextProperty, value); }
- }
-
- static InputScope PasswordInputScope
- {
- get
- {
- if (s_passwordInputScope != null)
- return s_passwordInputScope;
-
- s_passwordInputScope = new InputScope();
- var name = new InputScopeName { NameValue = InputScopeNameValue.Default };
- s_passwordInputScope.Names.Add(name);
-
- return s_passwordInputScope;
- }
- }
-
- void DelayObfuscation()
- {
- int lengthDifference = base.Text.Length - Text.Length;
-
- string updatedRealText = DetermineTextFromPassword(Text, base.Text);
-
- if (Text == updatedRealText)
- {
- // Nothing to do
- return;
- }
-
- Text = updatedRealText;
-
- // Cancel any pending delayed obfuscation
- _cts?.Cancel();
- _cts = null;
-
- string newText;
-
- if (lengthDifference != 1)
- {
- // Either More than one character got added in this text change (e.g., a paste operation)
- // Or characters were removed. Either way, we don't need to do the delayed obfuscation dance
- newText = Obfuscate();
- }
- else
- {
- // Only one character was added; we need to leave it visible for a brief time period
- // Obfuscate all but the last character for now
- newText = Obfuscate(true);
-
- // Leave the last character visible until a new character is added
- // or sufficient time has passed
- if (_cts == null)
- _cts = new CancellationTokenSource();
-
- Task.Run(async () =>
- {
- await Task.Delay(TimeSpan.FromSeconds(0.5), _cts.Token);
- _cts.Token.ThrowIfCancellationRequested();
- Dispatcher.BeginInvoke(() =>
- {
- base.Text = Obfuscate();
- SelectionStart = base.Text.Length;
- });
- }, _cts.Token);
- }
-
- if (base.Text == newText)
- return;
-
- base.Text = newText;
- SelectionStart = base.Text.Length;
- }
-
- static string DetermineTextFromPassword(string realText, string passwordText)
- {
- int firstObfuscationChar = passwordText.IndexOf(ObfuscationCharacter);
-
- if (firstObfuscationChar > 0)
- {
- // The user is typing faster than we can process, and the text is coming in at the beginning
- // of the textbox instead of the end
- passwordText = passwordText.Substring(firstObfuscationChar, passwordText.Length - firstObfuscationChar) + passwordText.Substring(0, firstObfuscationChar);
- }
-
- if (realText.Length == passwordText.Length)
- return realText;
-
- if (passwordText.Length == 0)
- return "";
-
- if (passwordText.Length < realText.Length)
- return realText.Substring(0, passwordText.Length);
-
- int lengthDifference = passwordText.Length - realText.Length;
-
- return realText + passwordText.Substring(passwordText.Length - lengthDifference, lengthDifference);
- }
-
- string Obfuscate(bool leaveLastVisible = false)
- {
- if (leaveLastVisible && Text.Length == 1)
- return Text;
-
- if (leaveLastVisible && Text.Length > 1)
- return new string(ObfuscationCharacter, Text.Length - 1) + Text.Substring(Text.Length - 1, 1);
-
- return new string(ObfuscationCharacter, Text.Length);
- }
-
- static void OnIsPasswordChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- var textBox = (FormsPhoneTextBox)dependencyObject;
- textBox.UpdateInputScope();
- textBox.SyncBaseText();
- }
-
- void OnSelectionChanged(object sender, RoutedEventArgs routedEventArgs)
- {
- if (!IsPassword)
- return;
-
- // Prevent the user from selecting any text in the password box by forcing all selection
- // to zero-length at the end of the text
- // This simulates the "do not allow clipboard copy" behavior the PasswordBox control has
- if (SelectionLength > 0 || SelectionStart < Text.Length)
- {
- SelectionLength = 0;
- SelectionStart = Text.Length;
- }
- }
-
- void OnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs textChangedEventArgs)
- {
- if (IsPassword)
- DelayObfuscation();
- else if (base.Text != Text)
- {
- // Not in password mode, so we just need to make the "real" Text match
- // what's in the textbox; the internalChange flag keeps the TextProperty
- // synchronization from happening
- _internalChangeFlag = true;
- Text = base.Text;
- _internalChangeFlag = false;
- }
- }
-
- void SyncBaseText()
- {
- if (_internalChangeFlag)
- return;
-
- base.Text = IsPassword ? Obfuscate() : Text;
- DisabledText = base.Text;
-
- SelectionStart = base.Text.Length;
- }
-
- static void TextPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
- {
- var textBox = (FormsPhoneTextBox)dependencyObject;
- textBox.SyncBaseText();
- }
-
- void UpdateInputScope()
- {
- if (IsPassword)
- {
- _cachedInputScope = InputScope;
- InputScope = PasswordInputScope; // We don't want suggestions turned on if we're in password mode
- }
- else
- InputScope = _cachedInputScope;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class FrameRenderer : ViewRenderer<Frame, Border>
- {
- public FrameRenderer()
- {
- AutoPackage = false;
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
- {
- base.OnElementChanged(e);
-
- SetNativeControl(new Border());
-
- PackChild();
- UpdateBorder();
- UpdateCornerRadius();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == "Content")
- PackChild();
- else if (e.PropertyName == Frame.OutlineColorProperty.PropertyName || e.PropertyName == Frame.HasShadowProperty.PropertyName)
- UpdateBorder();
- else if (e.PropertyName == Frame.CornerRadiusProperty.PropertyName)
- UpdateCornerRadius();
- }
-
- void PackChild()
- {
- if (Element.Content == null)
- return;
-
- Platform.SetRenderer(Element.Content, Platform.CreateRenderer(Element.Content));
-
- UIElement element = Platform.GetRenderer(Element.Content).ContainerElement;
- Control.Child = element;
- }
-
- void UpdateBorder()
- {
- if (Element.OutlineColor != Color.Default)
- {
- Control.BorderBrush = Element.OutlineColor.ToBrush();
- Control.BorderThickness = new System.Windows.Thickness(1);
- }
- else
- Control.BorderBrush = new Color(0, 0, 0, 0).ToBrush();
- }
-
- void UpdateCornerRadius()
- {
- float cornerRadius = Element.CornerRadius;
-
- if (cornerRadius == -1f)
- cornerRadius = 5f; // default corner radius
-
- Control.CornerRadius = new CornerRadius(cornerRadius);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Linq;
-using System.Reflection;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class FrameworkElementExtensions
- {
- static readonly Lazy<ConcurrentDictionary<Type, DependencyProperty>> ForegroundProperties =
- new Lazy<ConcurrentDictionary<Type, DependencyProperty>>(() => new ConcurrentDictionary<Type, DependencyProperty>());
-
- public static Brush GetForeground(this FrameworkElement element)
- {
- if (element == null)
- throw new ArgumentNullException("element");
-
- return (Brush)element.GetValue(GetForegroundProperty(element));
- }
-
- public static System.Windows.Data.Binding GetForegroundBinding(this FrameworkElement element)
- {
- System.Windows.Data.BindingExpression expr = element.GetBindingExpression(GetForegroundProperty(element));
- if (expr == null)
- return null;
-
- return expr.ParentBinding;
- }
-
- public static void SetForeground(this FrameworkElement element, Brush foregroundBrush)
- {
- if (element == null)
- throw new ArgumentNullException("element");
-
- element.SetValue(GetForegroundProperty(element), foregroundBrush);
- }
-
- public static void SetForeground(this FrameworkElement element, System.Windows.Data.Binding binding)
- {
- if (element == null)
- throw new ArgumentNullException("element");
-
- element.SetBinding(GetForegroundProperty(element), binding);
- }
-
- static DependencyProperty GetForegroundProperty(FrameworkElement element)
- {
- if (element is Control)
- return Control.ForegroundProperty;
- if (element is TextBlock)
- return TextBlock.ForegroundProperty;
-
- Type type = element.GetType();
-
- DependencyProperty foregroundProperty;
- if (!ForegroundProperties.Value.TryGetValue(type, out foregroundProperty))
- {
- FieldInfo field = type.GetFields(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(f => f.Name == "ForegroundProperty");
- if (field == null)
- throw new ArgumentException("type is not a Foregroundable type");
-
- var property = (DependencyProperty)field.GetValue(null);
- ForegroundProperties.Value.TryAdd(type, property);
-
- return property;
- }
-
- return foregroundProperty;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public interface ICellRenderer : IRegisterable
- {
- System.Windows.DataTemplate GetTemplate(Cell cell);
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public interface IVisualElementRenderer : IRegisterable
- {
- UIElement ContainerElement { get; }
-
- VisualElement Element { get; }
-
- event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint);
-
- void SetElement(VisualElement element);
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal static class ImageExtensions
- {
- public static Stretch ToStretch(this Aspect aspect)
- {
- switch (aspect)
- {
- case Aspect.Fill:
- return Stretch.Fill;
- case Aspect.AspectFill:
- return Stretch.UniformToFill;
- default:
- case Aspect.AspectFit:
- return Stretch.Uniform;
- }
- }
- }
-
- public class ImageRenderer : ViewRenderer<Image, System.Windows.Controls.Image>
- {
- IElementController ElementController => Element as IElementController;
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- // Someone reported a NRE happening in this method which can only be explained by Control being null
- // which only happens at the very beginning of the view lifecycle. Honest I have no idea how this might
- // happen because it really shouldn't measure at that point. Add check anyway and live in fear...
- if (Control?.Source == null)
- return new SizeRequest();
-
- var result = new Size { Width = ((BitmapImage)Control.Source).PixelWidth, Height = ((BitmapImage)Control.Source).PixelHeight };
-
- return new SizeRequest(result);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
- {
- base.OnElementChanged(e);
-
- if (e.NewElement != null)
- {
- if (Control == null)
- {
- var image = new System.Windows.Controls.Image();
- SetNativeControl(image);
- }
-
- SetSource(Control);
- SetAspect(Control);
- }
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Image.SourceProperty.PropertyName)
- SetSource(Control);
- else if (e.PropertyName == Image.AspectProperty.PropertyName)
- SetAspect(Control);
- }
-
- void SetAspect(System.Windows.Controls.Image image)
- {
- Aspect aspect = Element.Aspect;
-
- image.Stretch = aspect.ToStretch();
- }
-
- async void SetSource(System.Windows.Controls.Image image)
- {
- Element.SetIsLoading(true);
-
- ImageSource source = Element.Source;
- IImageSourceHandler handler;
- if (source != null && (handler = Internals.Registrar.Registered.GetHandlerForObject<IImageSourceHandler>(source)) != null)
- {
- System.Windows.Media.ImageSource imagesource;
- try
- {
- imagesource = await handler.LoadImageAsync(source);
- }
- catch (TaskCanceledException)
- {
- imagesource = null;
- }
- image.Source = imagesource;
- // if you dont at least measure the thing once it wont load the image
- // then the whole thing falls over.
- image.Measure(new System.Windows.Size(100, 100));
- ((IVisualElementController)Element).NativeSizeChanged();
- }
- else
- image.Source = null;
-
- Element.SetIsLoading(false);
- }
- }
-
- public interface IImageSourceHandler : IRegisterable
- {
- Task<System.Windows.Media.ImageSource> LoadImageAsync(ImageSource imagesoure, CancellationToken cancelationToken = default(CancellationToken));
- }
-
- public sealed class FileImageSourceHandler : IImageSourceHandler
- {
- public Task<System.Windows.Media.ImageSource> LoadImageAsync(ImageSource imagesoure, CancellationToken cancelationToken = new CancellationToken())
- {
- System.Windows.Media.ImageSource image = null;
- var filesource = imagesoure as FileImageSource;
- if (filesource != null)
- {
- string file = filesource.File;
- image = new BitmapImage(new Uri("/" + file, UriKind.Relative));
- }
- return Task.FromResult(image);
- }
- }
-
- public sealed class StreamImagesourceHandler : IImageSourceHandler
- {
- public async Task<System.Windows.Media.ImageSource> LoadImageAsync(ImageSource imagesource, CancellationToken cancelationToken = new CancellationToken())
- {
- BitmapImage bitmapimage = null;
-
- var streamsource = imagesource as StreamImageSource;
- if (streamsource != null && streamsource.Stream != null)
- {
- using (Stream stream = await ((IStreamImageSource)streamsource).GetStreamAsync(cancelationToken))
- {
- bitmapimage = new BitmapImage();
- bitmapimage.SetSource(stream);
- }
- }
- return (System.Windows.Media.ImageSource)bitmapimage;
- }
- }
-
- public sealed class ImageLoaderSourceHandler : IImageSourceHandler
- {
- public async Task<System.Windows.Media.ImageSource> LoadImageAsync(ImageSource imagesoure, CancellationToken cancelationToken = new CancellationToken())
- {
- BitmapImage bitmapimage = null;
- var imageLoader = imagesoure as UriImageSource;
- if (imageLoader != null && imageLoader.Uri != null)
- {
- using (Stream streamimage = await imageLoader.GetStreamAsync(cancelationToken))
- {
- if (streamimage != null && streamimage.CanRead)
- {
- bitmapimage = new BitmapImage();
- bitmapimage.SetSource(streamimage);
- }
- }
- }
- return bitmapimage;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public static class FormattedStringExtensions
- {
- public static IEnumerable<Inline> ToInlines(this FormattedString formattedString)
- {
- foreach (Span span in formattedString.Spans)
- yield return span.ToRun();
- }
-
- public static Run ToRun(this Span span)
- {
- var run = new Run { Text = span.Text };
-
- if (span.ForegroundColor != Color.Default)
- run.Foreground = span.ForegroundColor.ToBrush();
-
- if (!span.IsDefault())
-#pragma warning disable 618
- run.ApplyFont(span.Font);
-#pragma warning restore 618
-
- return run;
- }
- }
-
- public class LabelRenderer : ViewRenderer<Label, TextBlock>
- {
- bool _fontApplied;
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- if (Element == null)
- return finalSize;
- double childHeight = Math.Max(0, Math.Min(Element.Height, Control.DesiredSize.Height));
- var rect = new Rect();
-
- switch (Element.VerticalTextAlignment)
- {
- case TextAlignment.Start:
- break;
- default:
- case TextAlignment.Center:
- rect.Y = (int)((finalSize.Height - childHeight) / 2);
- break;
- case TextAlignment.End:
- rect.Y = finalSize.Height - childHeight;
- break;
- }
- rect.Height = childHeight;
- rect.Width = finalSize.Width;
- Control.Arrange(rect);
- return finalSize;
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
- {
- base.OnElementChanged(e);
-
- var textBlock = new TextBlock { Foreground = (Brush)System.Windows.Application.Current.Resources["PhoneForegroundBrush"] };
- UpdateText(textBlock);
- UpdateColor(textBlock);
- UpdateAlign(textBlock);
- UpdateFont(textBlock);
- UpdateLineBreakMode(textBlock);
- SetNativeControl(textBlock);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == Label.TextProperty.PropertyName || e.PropertyName == Label.FormattedTextProperty.PropertyName)
- UpdateText(Control);
- else if (e.PropertyName == Label.TextColorProperty.PropertyName)
- UpdateColor(Control);
- else if (e.PropertyName == Label.HorizontalTextAlignmentProperty.PropertyName || e.PropertyName == Label.VerticalTextAlignmentProperty.PropertyName)
- UpdateAlign(Control);
- else if (e.PropertyName == Label.FontProperty.PropertyName)
- UpdateFont(Control);
- else if (e.PropertyName == Label.LineBreakModeProperty.PropertyName)
- UpdateLineBreakMode(Control);
- base.OnElementPropertyChanged(sender, e);
- }
-
- void UpdateAlign(TextBlock textBlock)
- {
- if (textBlock == null)
- return;
-
- Label label = Element;
- if (label == null)
- return;
-
- textBlock.TextAlignment = label.HorizontalTextAlignment.ToNativeTextAlignment();
- textBlock.VerticalAlignment = label.VerticalTextAlignment.ToNativeVerticalAlignment();
- }
-
- void UpdateColor(TextBlock textBlock)
- {
- if (textBlock == null)
- return;
-
- Label label = Element;
- if (label != null && label.TextColor != Color.Default)
- textBlock.Foreground = label.TextColor.ToBrush();
- else
- textBlock.Foreground = (Brush)System.Windows.Application.Current.Resources["PhoneForegroundBrush"];
- }
-
- void UpdateFont(TextBlock textBlock)
- {
- if (textBlock == null)
- return;
-
- Label label = Element;
- if (label == null || (label.IsDefault() && !_fontApplied))
- return;
-
-#pragma warning disable 618
- Font fontToApply = label.IsDefault() ? Font.SystemFontOfSize(NamedSize.Medium) : label.Font;
-#pragma warning restore 618
-
- textBlock.ApplyFont(fontToApply);
- _fontApplied = true;
- }
-
- void UpdateLineBreakMode(TextBlock textBlock)
- {
- if (textBlock == null)
- return;
-
- switch (Element.LineBreakMode)
- {
- case LineBreakMode.NoWrap:
- textBlock.TextTrimming = TextTrimming.None;
- textBlock.TextWrapping = TextWrapping.NoWrap;
- break;
- case LineBreakMode.WordWrap:
- textBlock.TextTrimming = TextTrimming.None;
- textBlock.TextWrapping = TextWrapping.Wrap;
- break;
- case LineBreakMode.CharacterWrap:
- textBlock.TextTrimming = TextTrimming.WordEllipsis;
- textBlock.TextWrapping = TextWrapping.Wrap;
- break;
- case LineBreakMode.HeadTruncation:
- textBlock.TextTrimming = TextTrimming.WordEllipsis;
- textBlock.TextWrapping = TextWrapping.NoWrap;
- break;
- case LineBreakMode.TailTruncation:
- textBlock.TextTrimming = TextTrimming.WordEllipsis;
- textBlock.TextWrapping = TextWrapping.NoWrap;
- break;
- case LineBreakMode.MiddleTruncation:
- textBlock.TextTrimming = TextTrimming.WordEllipsis;
- textBlock.TextWrapping = TextWrapping.NoWrap;
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
-
- void UpdateText(TextBlock textBlock)
- {
- if (textBlock == null)
- return;
-
- Label label = Element;
- if (label != null)
- {
- if (label.FormattedText == null)
- textBlock.Text = label.Text;
- else
- {
- FormattedString formattedText = label.FormattedText ?? label.Text;
-
- textBlock.Inlines.Clear();
- foreach (Inline inline in formattedText.ToInlines())
- textBlock.Inlines.Add(inline);
- }
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Collections.Generic;
-using System.Windows;
-using WSize = System.Windows.Size;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public delegate SizeRequest? GetDesiredSizeDelegate(NativeViewWrapperRenderer renderer, double widthConstraint, double heightConstraint);
-
- public delegate WSize? ArrangeOverrideDelegate(NativeViewWrapperRenderer renderer, WSize finalSize);
-
- public delegate WSize? MeasureOverrideDelegate(NativeViewWrapperRenderer renderer, WSize availableSize);
-
- public static class LayoutExtensions
- {
- public static void Add(this IList<View> children, FrameworkElement view, GetDesiredSizeDelegate getDesiredSizeDelegate = null, ArrangeOverrideDelegate arrangeOverrideDelegate = null,
- MeasureOverrideDelegate measureOverrideDelegate = null)
- {
- children.Add(view.ToView(getDesiredSizeDelegate, arrangeOverrideDelegate, measureOverrideDelegate));
- }
-
- public static View ToView(this FrameworkElement view, GetDesiredSizeDelegate getDesiredSizeDelegate = null, ArrangeOverrideDelegate arrangeOverrideDelegate = null,
- MeasureOverrideDelegate measureOverrideDelegate = null)
- {
- return new NativeViewWrapper(view, getDesiredSizeDelegate, arrangeOverrideDelegate, measureOverrideDelegate);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Controls.Primitives;
-using System.Windows.Input;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-using GestureEventArgs = System.Windows.Input.GestureEventArgs;
-using SLButton = System.Windows.Controls.Button;
-using SLBinding = System.Windows.Data.Binding;
-using System.Collections;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- // Fixes a weird crash, don't ask.
- internal class FixedLongListSelector : LongListSelector
- {
- bool _isInPullToRefresh;
-
- System.Windows.Point _lastPosition;
- double _pullToRefreshStatus;
-
- public FixedLongListSelector()
- {
- Loaded += OnLoaded;
- }
-
- public bool IsInPullToRefresh
- {
- get { return _isInPullToRefresh; }
- private set
- {
- if (_isInPullToRefresh == value)
- return;
- _isInPullToRefresh = value;
-
- if (_isInPullToRefresh)
- {
- EventHandler handler = PullToRefreshStarted;
- if (handler != null)
- handler(this, EventArgs.Empty);
- }
- else
- {
- EventHandler handler = PullToRefreshStatus >= 1 ? PullToRefreshCompleted : PullToRefreshCanceled;
- if (handler != null)
- handler(this, EventArgs.Empty);
- _pullToRefreshStatus = 0;
- }
- }
- }
-
- public double PullToRefreshStatus
- {
- get { return _pullToRefreshStatus; }
- set
- {
- if (_pullToRefreshStatus == value)
- return;
- _pullToRefreshStatus = value;
- EventHandler handler = PullToRefreshStatusUpdated;
- if (handler != null)
- handler(this, EventArgs.Empty);
- }
- }
-
- public ViewportControl ViewportControl { get; private set; }
-
- bool ViewportAtTop
- {
- get { return ViewportControl.Viewport.Top == 0; }
- }
-
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
-
- if (ViewportControl != null)
- {
- ViewportControl.ViewportChanged -= OnViewportChanged;
- ViewportControl.ManipulationStateChanged -= OnManipulationStateChanged;
- }
-
- ViewportControl = (ViewportControl)VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this, 0), 0), 0);
- ViewportControl.ViewportChanged += OnViewportChanged;
- ViewportControl.ManipulationStateChanged += OnManipulationStateChanged;
- }
-
- public event EventHandler PullToRefreshCanceled;
-
- public event EventHandler PullToRefreshCompleted;
-
- public event EventHandler PullToRefreshStarted;
-
- public event EventHandler PullToRefreshStatusUpdated;
-
- protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
- {
- try
- {
- return base.MeasureOverride(availableSize);
- }
- catch (ArgumentException)
- {
- return base.MeasureOverride(availableSize);
- }
- }
-
- void OnFrameReported(object sender, TouchFrameEventArgs e)
- {
- TouchPoint touchPoint;
- try
- {
- touchPoint = e.GetPrimaryTouchPoint(this);
- }
- catch (Exception)
- {
- return;
- }
-
- if (touchPoint == null || touchPoint.Action != TouchAction.Move)
- return;
-
- System.Windows.Point position = touchPoint.Position;
-
- if (IsInPullToRefresh)
- {
- double delta = position.Y - _lastPosition.Y;
- PullToRefreshStatus += delta / 150.0;
- }
-
- _lastPosition = position;
- }
-
- void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
- {
- Loaded -= OnLoaded;
- Unloaded += OnUnloaded;
-
- Touch.FrameReported += OnFrameReported;
- }
-
- void OnManipulationStateChanged(object o, ManipulationStateChangedEventArgs args)
- {
- switch (ViewportControl.ManipulationState)
- {
- case ManipulationState.Idle:
- // thing is rested
- IsInPullToRefresh = false;
- break;
- case ManipulationState.Manipulating:
- // user interaction
- IsInPullToRefresh = ViewportAtTop;
- break;
- case ManipulationState.Animating:
- // user let go
- IsInPullToRefresh = false;
- break;
- default:
- throw new ArgumentOutOfRangeException();
- }
- }
-
- void OnUnloaded(object sender, RoutedEventArgs routedEventArgs)
- {
- Loaded += OnLoaded;
- Unloaded -= OnUnloaded;
-
- Touch.FrameReported -= OnFrameReported;
- }
-
- void OnViewportChanged(object o, ViewportChangedEventArgs args)
- {
- if (ViewportControl.ManipulationState == ManipulationState.Manipulating)
- IsInPullToRefresh = ViewportAtTop;
- }
- }
-
- public class ListViewRenderer : ViewRenderer<ListView, LongListSelector>
- {
- public static readonly DependencyProperty HighlightWhenSelectedProperty = DependencyProperty.RegisterAttached("HighlightWhenSelected", typeof(bool), typeof(ListViewRenderer),
- new PropertyMetadata(false));
-
- readonly List<Tuple<FrameworkElement, SLBinding, Brush>> _previousHighlights = new List<Tuple<FrameworkElement, SLBinding, Brush>>();
-
- Animatable _animatable;
- object _fromNative;
- bool _itemNeedsSelecting;
- FixedLongListSelector _listBox;
- System.Windows.Controls.ProgressBar _progressBar;
-
- ViewportControl _viewport;
- ITemplatedItemsView<Cell> TemplatedItemsView => base.Element;
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- SizeRequest result = base.GetDesiredSize(widthConstraint, heightConstraint);
- result.Minimum = new Size(40, 40);
- return result;
- }
-
- public static bool GetHighlightWhenSelected(DependencyObject dependencyObject)
- {
- return (bool)dependencyObject.GetValue(HighlightWhenSelectedProperty);
- }
-
- public static void SetHighlightWhenSelected(DependencyObject dependencyObject, bool value)
- {
- dependencyObject.SetValue(HighlightWhenSelectedProperty, value);
- }
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- System.Windows.Size result = base.ArrangeOverride(finalSize);
-
- _progressBar.Measure(finalSize);
- _progressBar.Arrange(new Rect(0, 0, finalSize.Width, _progressBar.DesiredSize.Height));
-
- return result;
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
- {
- base.OnElementChanged(e);
-
- Element.ScrollToRequested += OnScrollToRequested;
-
- if (base.Element.SelectedItem != null)
- _itemNeedsSelecting = true;
-
- _listBox = new FixedLongListSelector {
- DataContext = base.Element,
- ItemsSource = (IList)TemplatedItemsView.TemplatedItems,
- ItemTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["CellTemplate"],
- GroupHeaderTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewHeader"],
- ListHeaderTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["View"],
- ListFooterTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["View"]
- };
- _listBox.SetBinding(LongListSelector.IsGroupingEnabledProperty, new SLBinding("IsGroupingEnabled"));
-
- _listBox.SelectionChanged += OnNativeSelectionChanged;
- _listBox.Tap += OnNativeItemTapped;
- _listBox.ItemRealized += OnItemRealized;
-
- _listBox.PullToRefreshStarted += OnPullToRefreshStarted;
- _listBox.PullToRefreshCompleted += OnPullToRefreshCompleted;
- _listBox.PullToRefreshCanceled += OnPullToRefreshCanceled;
- _listBox.PullToRefreshStatusUpdated += OnPullToRefreshStatusUpdated;
-
- SetNativeControl(_listBox);
-
- _progressBar = new System.Windows.Controls.ProgressBar { Maximum = 1, Visibility = Visibility.Collapsed };
- Children.Add(_progressBar);
-
- UpdateHeader();
- UpdateFooter();
- UpdateJumpList();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == ListView.SelectedItemProperty.PropertyName)
- OnItemSelected(base.Element.SelectedItem);
- else if (e.PropertyName == "HeaderElement")
- UpdateHeader();
- else if (e.PropertyName == "FooterElement")
- UpdateFooter();
- else if ((e.PropertyName == ListView.IsRefreshingProperty.PropertyName) || (e.PropertyName == ListView.IsPullToRefreshEnabledProperty.PropertyName) || (e.PropertyName == "CanRefresh"))
- UpdateIsRefreshing();
- else if (e.PropertyName == "GroupShortNameBinding")
- UpdateJumpList();
- }
-
- protected override void UpdateNativeWidget()
- {
- base.UpdateNativeWidget();
-
- if (_progressBar != null)
- _progressBar.Width = base.Element.Width;
- }
-
- Cell FindCell(GestureEventArgs e, out FrameworkElement element)
- {
- Cell cell = null;
- element = e.OriginalSource as FrameworkElement;
- if (element != null)
- cell = element.DataContext as Cell;
-
- if (cell == null)
- {
- System.Windows.Point pos = e.GetPosition(_listBox);
- IEnumerable<UIElement> elements = VisualTreeHelper.FindElementsInHostCoordinates(pos, _listBox);
- foreach (FrameworkElement frameworkElement in elements.OfType<FrameworkElement>())
- {
- if ((cell = frameworkElement.DataContext as Cell) != null)
- {
- element = frameworkElement;
- break;
- }
- }
- }
-
- return cell;
- }
-
- static IEnumerable<T> FindDescendants<T>(DependencyObject dobj) where T : DependencyObject
- {
- int count = VisualTreeHelper.GetChildrenCount(dobj);
- for (var i = 0; i < count; i++)
- {
- DependencyObject element = VisualTreeHelper.GetChild(dobj, i);
- if (element is T)
- yield return (T)element;
-
- foreach (T descendant in FindDescendants<T>(element))
- yield return descendant;
- }
- }
-
- FrameworkElement FindElement(Cell cell)
- {
- foreach (CellControl selector in FindDescendants<CellControl>(_listBox))
- {
- if (ReferenceEquals(cell, selector.DataContext))
- return selector;
- }
-
- return null;
- }
-
- IEnumerable<FrameworkElement> FindHighlight(FrameworkElement element)
- {
- FrameworkElement parent = element;
- while (true)
- {
- element = parent;
- if (element is CellControl)
- break;
-
- parent = VisualTreeHelper.GetParent(element) as FrameworkElement;
- if (parent == null)
- {
- parent = element;
- break;
- }
- }
-
- return FindHighlightCore(parent);
- }
-
- IEnumerable<FrameworkElement> FindHighlightCore(DependencyObject element)
- {
- int children = VisualTreeHelper.GetChildrenCount(element);
- for (var i = 0; i < children; i++)
- {
- DependencyObject child = VisualTreeHelper.GetChild(element, i);
-
- var label = child as LabelRenderer;
- var childElement = child as FrameworkElement;
- if (childElement != null && (GetHighlightWhenSelected(childElement) || label != null))
- {
- if (label != null)
- yield return label.Control;
- else
- yield return childElement;
- }
-
- foreach (FrameworkElement recursedElement in FindHighlightCore(childElement))
- yield return recursedElement;
- }
- }
-
- double GetHeight(Dictionary<System.Windows.DataTemplate, FrameworkElement> reusables, System.Windows.DataTemplate template, object bindingContext)
- {
- double width = Control.ActualWidth;
-
- FrameworkElement content;
- if (!reusables.TryGetValue(template, out content))
- {
- content = (FrameworkElement)template.LoadContent();
-
- // Windows Phone refuses to properly bind things on a first pass or even a second pass unless it has different content
- // so we'll force it to cycle here the first time for each template.
- content.DataContext = bindingContext;
- content.Measure(new System.Windows.Size(width, double.PositiveInfinity));
- content.DataContext = null;
- content.Measure(new System.Windows.Size(width, double.PositiveInfinity));
-
- var control = content as Control;
- if (control != null)
- {
- // Since we're not adding to the visual tree, we need to inherit the font to measure correctly.
- control.FontFamily = Control.FontFamily;
- }
-
- reusables[template] = content;
- }
-
- content.DataContext = bindingContext;
- content.Measure(new System.Windows.Size(width, double.PositiveInfinity));
- return content.DesiredSize.Height;
- }
-
- void OnItemRealized(object sender, ItemRealizationEventArgs e)
- {
- if (!_itemNeedsSelecting)
- return;
-
- var cell = e.Container.DataContext as Cell;
- if (cell == null || !Equals(cell.BindingContext, base.Element.SelectedItem))
- return;
-
- _itemNeedsSelecting = false;
- OnItemSelected(base.Element.SelectedItem);
- }
-
- void OnItemSelected(object selectedItem)
- {
- if (_fromNative != null && Equals(selectedItem, _fromNative))
- {
- _fromNative = null;
- return;
- }
-
- RestorePreviousSelectedVisual();
-
- if (selectedItem == null)
- {
- _listBox.SelectedItem = selectedItem;
- return;
- }
-
- IEnumerable<CellControl> items = FindDescendants<CellControl>(_listBox);
-
- CellControl item = items.FirstOrDefault(i =>
- {
- var cell = (Cell)i.DataContext;
- return Equals(cell.BindingContext, selectedItem);
- });
-
- if (item == null)
- {
- _itemNeedsSelecting = true;
- return;
- }
-
- SetSelectedVisual(item);
- }
-
- void OnNativeItemTapped(object sender, GestureEventArgs e)
- {
- var cell = (Cell)Control.SelectedItem;
- if (cell == null)
- return;
-
- Cell parentCell = null;
-
- if (base.Element.IsGroupingEnabled)
- {
- parentCell = cell.GetGroupHeaderContent<ItemsView<Cell>, Cell>();
- }
-
- _fromNative = cell.BindingContext;
-
- if (base.Element.IsGroupingEnabled)
- {
- Element.NotifyRowTapped(parentCell.GetIndex<ItemsView<Cell>, Cell>(), cell.GetIndex<ItemsView<Cell>, Cell>(), null);
- }
- else
- Element.NotifyRowTapped(cell.GetIndex<ItemsView<Cell>, Cell>(), null);
- }
-
- void OnNativeSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (e.AddedItems.Count == 0)
- return;
-
- var cell = (Cell)e.AddedItems[0];
-
- if (cell == null)
- {
- RestorePreviousSelectedVisual();
- return;
- }
-
- RestorePreviousSelectedVisual();
- FrameworkElement element = FindElement(cell);
- if (element != null)
- SetSelectedVisual(element);
- }
-
- void OnPullToRefreshCanceled(object sender, EventArgs args)
- {
- if (base.Element.IsPullToRefreshEnabled && Element.RefreshAllowed)
- _progressBar.Visibility = Visibility.Collapsed;
- }
-
- void OnPullToRefreshCompleted(object sender, EventArgs args)
- {
- if (base.Element.IsPullToRefreshEnabled && Element.RefreshAllowed)
- {
- _progressBar.IsIndeterminate = true;
- Element.SendRefreshing();
- }
- }
-
- void OnPullToRefreshStarted(object sender, EventArgs args)
- {
- if (base.Element.IsPullToRefreshEnabled && Element.RefreshAllowed)
- {
- _progressBar.Visibility = Visibility.Visible;
- _progressBar.IsIndeterminate = false;
- _progressBar.Value = Math.Max(0, Math.Min(1, _listBox.PullToRefreshStatus));
- }
- }
-
- void OnPullToRefreshStatusUpdated(object sender, EventArgs eventArgs)
- {
- if (base.Element.IsPullToRefreshEnabled && Element.RefreshAllowed)
- _progressBar.Value = Math.Max(0, Math.Min(1, _listBox.PullToRefreshStatus));
- }
-
- void OnScrollToRequested(object sender, ScrollToRequestedEventArgs e)
- {
- if (_animatable == null && e.ShouldAnimate)
- _animatable = new Animatable();
-
- if (_viewport == null)
- {
- // Making sure we're actually loaded
- if (VisualTreeHelper.GetChildrenCount(_listBox) == 0)
- {
- RoutedEventHandler handler = null;
- handler = (o, args) =>
- {
- Control.Loaded -= handler;
- OnScrollToRequested(sender, e);
- };
- Control.Loaded += handler;
-
- return;
- }
- _viewport = (ViewportControl)VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(_listBox, 0), 0), 0);
- if (_viewport.Viewport.Bottom == 0)
- {
- EventHandler<ViewportChangedEventArgs> viewportChanged = null;
- viewportChanged = (o, args) =>
- {
- if (_viewport.Viewport.Bottom == 0)
- return;
-
- _viewport.ViewportChanged -= viewportChanged;
- OnScrollToRequested(sender, e);
- };
- _viewport.ViewportChanged += viewportChanged;
- return;
- }
- }
-
- double y = 0;
- double targetHeight = 0;
- double targetHeaderHeight = 0;
-
- var templateReusables = new Dictionary<System.Windows.DataTemplate, FrameworkElement>();
- var templatedItems = TemplatedItemsView.TemplatedItems;
- var scrollArgs = (ITemplatedItemsListScrollToRequestedEventArgs)e;
-
- var found = false;
-
- if (base.Element.IsGroupingEnabled)
- {
- for (var g = 0; g < templatedItems.Count; g++)
- {
- if (found)
- break;
-
- var til = templatedItems.GetGroup(g);
-
- double headerHeight = GetHeight(templateReusables, Control.GroupHeaderTemplate, til);
- y += headerHeight;
-
- for (var i = 0; i < til.Count; i++)
- {
- Cell cell = til[i] as Cell;
-
- double contentHeight = GetHeight(templateReusables, Control.ItemTemplate, cell);
-
- if ((ReferenceEquals(til.BindingContext, scrollArgs.Group) || scrollArgs.Group == null) && ReferenceEquals(cell.BindingContext, scrollArgs.Item))
- {
- targetHeaderHeight = headerHeight;
- targetHeight = contentHeight;
- found = true;
- break;
- }
-
- y += contentHeight;
- }
- }
- }
- else
- {
- for (var i = 0; i < templatedItems.Count; i++)
- {
- Cell cell = templatedItems[i] as Cell;
-
- double height = GetHeight(templateReusables, Control.ItemTemplate, cell);
-
- if (ReferenceEquals(cell.BindingContext, scrollArgs.Item))
- {
- found = true;
- targetHeight = height;
- break;
- }
-
- y += height;
- }
- }
-
- if (!found)
- return;
-
- ScrollToPosition position = e.Position;
- if (position == ScrollToPosition.MakeVisible)
- {
- if (y >= _viewport.Viewport.Top && y <= _viewport.Viewport.Bottom)
- return;
- if (y > _viewport.Viewport.Bottom)
- position = ScrollToPosition.End;
- else
- position = ScrollToPosition.Start;
- }
-
- if (position == ScrollToPosition.Start && base.Element.IsGroupingEnabled)
- y = y - targetHeaderHeight;
- else if (position == ScrollToPosition.Center)
- y = y - (_viewport.ActualHeight / 2 + targetHeight / 2);
- else if (position == ScrollToPosition.End)
- y = y - _viewport.ActualHeight + targetHeight;
-
- double startY = _viewport.Viewport.Y;
- double distance = y - startY;
-
- if (e.ShouldAnimate)
- {
- var animation = new Animation(v => { _viewport.SetViewportOrigin(new System.Windows.Point(0, startY + distance * v)); });
-
- animation.Commit(_animatable, "ScrollTo", length: 500, easing: Easing.CubicInOut);
- }
- else
- _viewport.SetViewportOrigin(new System.Windows.Point(0, y));
- }
-
- void RestorePreviousSelectedVisual()
- {
- foreach (Tuple<FrameworkElement, SLBinding, Brush> highlight in _previousHighlights)
- {
- if (highlight.Item2 != null)
- highlight.Item1.SetForeground(highlight.Item2);
- else
- highlight.Item1.SetForeground(highlight.Item3);
- }
-
- _previousHighlights.Clear();
- }
-
- void SetSelectedVisual(FrameworkElement element)
- {
- IEnumerable<FrameworkElement> highlightMes = FindHighlight(element);
- foreach (FrameworkElement toHighlight in highlightMes)
- {
- Brush brush = null;
- SLBinding binding = toHighlight.GetForegroundBinding();
- if (binding == null)
- brush = toHighlight.GetForeground();
-
- _previousHighlights.Add(new Tuple<FrameworkElement, SLBinding, Brush>(toHighlight, binding, brush));
- toHighlight.SetForeground((Brush)System.Windows.Application.Current.Resources["PhoneAccentBrush"]);
- }
- }
-
- void UpdateFooter()
- {
- Control.ListFooter = Element.FooterElement;
- }
-
- void UpdateHeader()
- {
- Control.ListHeader = Element.HeaderElement;
- }
-
- void UpdateIsRefreshing()
- {
- if (base.Element.IsRefreshing)
- {
- _progressBar.Visibility = Visibility.Visible;
- _progressBar.IsIndeterminate = true;
- }
- else
- {
- _progressBar.IsIndeterminate = false;
- _progressBar.Visibility = _listBox.IsInPullToRefresh && base.Element.IsPullToRefreshEnabled && Element.RefreshAllowed ? Visibility.Visible : Visibility.Collapsed;
- }
- }
-
- void UpdateJumpList()
- {
- if (_listBox.IsGroupingEnabled && base.Element.GroupShortNameBinding == null)
- _listBox.JumpListStyle = null;
- else
- _listBox.JumpListStyle = (System.Windows.Style)System.Windows.Application.Current.Resources["HeaderJumpStyle"];
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Security.Cryptography;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal abstract class MD5 : HashAlgorithm
- {
- public MD5()
- {
- HashSizeValue = 128;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal sealed class MD5CryptoServiceProvider : MD5
- {
- const int BlockSizeBytes = 64;
-
- static readonly uint[] K =
- {
- 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122,
- 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905,
- 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039,
- 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82,
- 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
- };
-
- uint[] _buff;
- ulong _count;
- uint[] _h;
- byte[] _processingBuffer; // Used to start data when passed less than a block worth.
- int _processingBufferCount; // Counts how much data we have stored that still needs processed.
-
- public MD5CryptoServiceProvider()
- {
- _h = new uint[4];
- _buff = new uint[16];
- _processingBuffer = new byte[BlockSizeBytes];
-
- Initialize();
- }
-
- public override void Initialize()
- {
- _count = 0;
- _processingBufferCount = 0;
-
- _h[0] = 0x67452301;
- _h[1] = 0xefcdab89;
- _h[2] = 0x98badcfe;
- _h[3] = 0x10325476;
- }
-
- protected override void Dispose(bool disposing)
- {
- if (_processingBuffer != null)
- {
- Array.Clear(_processingBuffer, 0, _processingBuffer.Length);
- _processingBuffer = null;
- }
- if (_h != null)
- {
- Array.Clear(_h, 0, _h.Length);
- _h = null;
- }
- if (_buff != null)
- {
- Array.Clear(_buff, 0, _buff.Length);
- _buff = null;
- }
- }
-
- protected override void HashCore(byte[] rgb, int ibStart, int cbSize)
- {
- int i;
- State = 1;
-
- if (_processingBufferCount != 0)
- {
- if (cbSize < BlockSizeBytes - _processingBufferCount)
- {
- Buffer.BlockCopy(rgb, ibStart, _processingBuffer, _processingBufferCount, cbSize);
- _processingBufferCount += cbSize;
- return;
- }
- i = BlockSizeBytes - _processingBufferCount;
- Buffer.BlockCopy(rgb, ibStart, _processingBuffer, _processingBufferCount, i);
- ProcessBlock(_processingBuffer, 0);
- _processingBufferCount = 0;
- ibStart += i;
- cbSize -= i;
- }
-
- for (i = 0; i < cbSize - cbSize % BlockSizeBytes; i += BlockSizeBytes)
- ProcessBlock(rgb, ibStart + i);
-
- if (cbSize % BlockSizeBytes != 0)
- {
- Buffer.BlockCopy(rgb, cbSize - cbSize % BlockSizeBytes + ibStart, _processingBuffer, 0, cbSize % BlockSizeBytes);
- _processingBufferCount = cbSize % BlockSizeBytes;
- }
- }
-
- protected override byte[] HashFinal()
- {
- var hash = new byte[16];
- int i, j;
-
- ProcessFinalBlock(_processingBuffer, 0, _processingBufferCount);
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 4; j++)
- hash[i * 4 + j] = (byte)(_h[i] >> j * 8);
- }
-
- return hash;
- }
-
- internal void AddLength(ulong length, byte[] buffer, int position)
- {
- buffer[position++] = (byte)length;
- buffer[position++] = (byte)(length >> 8);
- buffer[position++] = (byte)(length >> 16);
- buffer[position++] = (byte)(length >> 24);
- buffer[position++] = (byte)(length >> 32);
- buffer[position++] = (byte)(length >> 40);
- buffer[position++] = (byte)(length >> 48);
- buffer[position] = (byte)(length >> 56);
- }
-
- void ProcessBlock(byte[] inputBuffer, int inputOffset)
- {
- uint a, b, c, d;
- int i;
-
- _count += BlockSizeBytes;
-
- for (i = 0; i < 16; i++)
- {
- _buff[i] = inputBuffer[inputOffset + 4 * i] | ((uint)inputBuffer[inputOffset + 4 * i + 1] << 8) | ((uint)inputBuffer[inputOffset + 4 * i + 2] << 16) |
- ((uint)inputBuffer[inputOffset + 4 * i + 3] << 24);
- }
-
- a = _h[0];
- b = _h[1];
- c = _h[2];
- d = _h[3];
-
- // This function was unrolled because it seems to be doubling our performance with current compiler/VM.
- // Possibly roll up if this changes.
-
- // ---- Round 1 --------
-
- a += (((c ^ d) & b) ^ d) + K[0] + _buff[0];
- a = (a << 7) | (a >> 25);
- a += b;
-
- d += (((b ^ c) & a) ^ c) + K[1] + _buff[1];
- d = (d << 12) | (d >> 20);
- d += a;
-
- c += (((a ^ b) & d) ^ b) + K[2] + _buff[2];
- c = (c << 17) | (c >> 15);
- c += d;
-
- b += (((d ^ a) & c) ^ a) + K[3] + _buff[3];
- b = (b << 22) | (b >> 10);
- b += c;
-
- a += (((c ^ d) & b) ^ d) + K[4] + _buff[4];
- a = (a << 7) | (a >> 25);
- a += b;
-
- d += (((b ^ c) & a) ^ c) + K[5] + _buff[5];
- d = (d << 12) | (d >> 20);
- d += a;
-
- c += (((a ^ b) & d) ^ b) + K[6] + _buff[6];
- c = (c << 17) | (c >> 15);
- c += d;
-
- b += (((d ^ a) & c) ^ a) + K[7] + _buff[7];
- b = (b << 22) | (b >> 10);
- b += c;
-
- a += (((c ^ d) & b) ^ d) + K[8] + _buff[8];
- a = (a << 7) | (a >> 25);
- a += b;
-
- d += (((b ^ c) & a) ^ c) + K[9] + _buff[9];
- d = (d << 12) | (d >> 20);
- d += a;
-
- c += (((a ^ b) & d) ^ b) + K[10] + _buff[10];
- c = (c << 17) | (c >> 15);
- c += d;
-
- b += (((d ^ a) & c) ^ a) + K[11] + _buff[11];
- b = (b << 22) | (b >> 10);
- b += c;
-
- a += (((c ^ d) & b) ^ d) + K[12] + _buff[12];
- a = (a << 7) | (a >> 25);
- a += b;
-
- d += (((b ^ c) & a) ^ c) + K[13] + _buff[13];
- d = (d << 12) | (d >> 20);
- d += a;
-
- c += (((a ^ b) & d) ^ b) + K[14] + _buff[14];
- c = (c << 17) | (c >> 15);
- c += d;
-
- b += (((d ^ a) & c) ^ a) + K[15] + _buff[15];
- b = (b << 22) | (b >> 10);
- b += c;
-
- // ---- Round 2 --------
-
- a += (((b ^ c) & d) ^ c) + K[16] + _buff[1];
- a = (a << 5) | (a >> 27);
- a += b;
-
- d += (((a ^ b) & c) ^ b) + K[17] + _buff[6];
- d = (d << 9) | (d >> 23);
- d += a;
-
- c += (((d ^ a) & b) ^ a) + K[18] + _buff[11];
- c = (c << 14) | (c >> 18);
- c += d;
-
- b += (((c ^ d) & a) ^ d) + K[19] + _buff[0];
- b = (b << 20) | (b >> 12);
- b += c;
-
- a += (((b ^ c) & d) ^ c) + K[20] + _buff[5];
- a = (a << 5) | (a >> 27);
- a += b;
-
- d += (((a ^ b) & c) ^ b) + K[21] + _buff[10];
- d = (d << 9) | (d >> 23);
- d += a;
-
- c += (((d ^ a) & b) ^ a) + K[22] + _buff[15];
- c = (c << 14) | (c >> 18);
- c += d;
-
- b += (((c ^ d) & a) ^ d) + K[23] + _buff[4];
- b = (b << 20) | (b >> 12);
- b += c;
-
- a += (((b ^ c) & d) ^ c) + K[24] + _buff[9];
- a = (a << 5) | (a >> 27);
- a += b;
-
- d += (((a ^ b) & c) ^ b) + K[25] + _buff[14];
- d = (d << 9) | (d >> 23);
- d += a;
-
- c += (((d ^ a) & b) ^ a) + K[26] + _buff[3];
- c = (c << 14) | (c >> 18);
- c += d;
-
- b += (((c ^ d) & a) ^ d) + K[27] + _buff[8];
- b = (b << 20) | (b >> 12);
- b += c;
-
- a += (((b ^ c) & d) ^ c) + K[28] + _buff[13];
- a = (a << 5) | (a >> 27);
- a += b;
-
- d += (((a ^ b) & c) ^ b) + K[29] + _buff[2];
- d = (d << 9) | (d >> 23);
- d += a;
-
- c += (((d ^ a) & b) ^ a) + K[30] + _buff[7];
- c = (c << 14) | (c >> 18);
- c += d;
-
- b += (((c ^ d) & a) ^ d) + K[31] + _buff[12];
- b = (b << 20) | (b >> 12);
- b += c;
-
- // ---- Round 3 --------
-
- a += (b ^ c ^ d) + K[32] + _buff[5];
- a = (a << 4) | (a >> 28);
- a += b;
-
- d += (a ^ b ^ c) + K[33] + _buff[8];
- d = (d << 11) | (d >> 21);
- d += a;
-
- c += (d ^ a ^ b) + K[34] + _buff[11];
- c = (c << 16) | (c >> 16);
- c += d;
-
- b += (c ^ d ^ a) + K[35] + _buff[14];
- b = (b << 23) | (b >> 9);
- b += c;
-
- a += (b ^ c ^ d) + K[36] + _buff[1];
- a = (a << 4) | (a >> 28);
- a += b;
-
- d += (a ^ b ^ c) + K[37] + _buff[4];
- d = (d << 11) | (d >> 21);
- d += a;
-
- c += (d ^ a ^ b) + K[38] + _buff[7];
- c = (c << 16) | (c >> 16);
- c += d;
-
- b += (c ^ d ^ a) + K[39] + _buff[10];
- b = (b << 23) | (b >> 9);
- b += c;
-
- a += (b ^ c ^ d) + K[40] + _buff[13];
- a = (a << 4) | (a >> 28);
- a += b;
-
- d += (a ^ b ^ c) + K[41] + _buff[0];
- d = (d << 11) | (d >> 21);
- d += a;
-
- c += (d ^ a ^ b) + K[42] + _buff[3];
- c = (c << 16) | (c >> 16);
- c += d;
-
- b += (c ^ d ^ a) + K[43] + _buff[6];
- b = (b << 23) | (b >> 9);
- b += c;
-
- a += (b ^ c ^ d) + K[44] + _buff[9];
- a = (a << 4) | (a >> 28);
- a += b;
-
- d += (a ^ b ^ c) + K[45] + _buff[12];
- d = (d << 11) | (d >> 21);
- d += a;
-
- c += (d ^ a ^ b) + K[46] + _buff[15];
- c = (c << 16) | (c >> 16);
- c += d;
-
- b += (c ^ d ^ a) + K[47] + _buff[2];
- b = (b << 23) | (b >> 9);
- b += c;
-
- // ---- Round 4 --------
-
- a += ((~d | b) ^ c) + K[48] + _buff[0];
- a = (a << 6) | (a >> 26);
- a += b;
-
- d += ((~c | a) ^ b) + K[49] + _buff[7];
- d = (d << 10) | (d >> 22);
- d += a;
-
- c += ((~b | d) ^ a) + K[50] + _buff[14];
- c = (c << 15) | (c >> 17);
- c += d;
-
- b += ((~a | c) ^ d) + K[51] + _buff[5];
- b = (b << 21) | (b >> 11);
- b += c;
-
- a += ((~d | b) ^ c) + K[52] + _buff[12];
- a = (a << 6) | (a >> 26);
- a += b;
-
- d += ((~c | a) ^ b) + K[53] + _buff[3];
- d = (d << 10) | (d >> 22);
- d += a;
-
- c += ((~b | d) ^ a) + K[54] + _buff[10];
- c = (c << 15) | (c >> 17);
- c += d;
-
- b += ((~a | c) ^ d) + K[55] + _buff[1];
- b = (b << 21) | (b >> 11);
- b += c;
-
- a += ((~d | b) ^ c) + K[56] + _buff[8];
- a = (a << 6) | (a >> 26);
- a += b;
-
- d += ((~c | a) ^ b) + K[57] + _buff[15];
- d = (d << 10) | (d >> 22);
- d += a;
-
- c += ((~b | d) ^ a) + K[58] + _buff[6];
- c = (c << 15) | (c >> 17);
- c += d;
-
- b += ((~a | c) ^ d) + K[59] + _buff[13];
- b = (b << 21) | (b >> 11);
- b += c;
-
- a += ((~d | b) ^ c) + K[60] + _buff[4];
- a = (a << 6) | (a >> 26);
- a += b;
-
- d += ((~c | a) ^ b) + K[61] + _buff[11];
- d = (d << 10) | (d >> 22);
- d += a;
-
- c += ((~b | d) ^ a) + K[62] + _buff[2];
- c = (c << 15) | (c >> 17);
- c += d;
-
- b += ((~a | c) ^ d) + K[63] + _buff[9];
- b = (b << 21) | (b >> 11);
- b += c;
-
- _h[0] += a;
- _h[1] += b;
- _h[2] += c;
- _h[3] += d;
- }
-
- void ProcessFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
- {
- ulong total = _count + (ulong)inputCount;
- var paddingSize = (int)(56 - total % BlockSizeBytes);
-
- if (paddingSize < 1)
- paddingSize += BlockSizeBytes;
-
- var fooBuffer = new byte[inputCount + paddingSize + 8];
-
- for (var i = 0; i < inputCount; i++)
- fooBuffer[i] = inputBuffer[i + inputOffset];
-
- fooBuffer[inputCount] = 0x80;
- for (int i = inputCount + 1; i < inputCount + paddingSize; i++)
- fooBuffer[i] = 0x00;
-
- // I deal in bytes. The algorithm deals in bits.
- ulong size = total << 3;
- AddLength(size, fooBuffer, inputCount + paddingSize);
- ProcessBlock(fooBuffer, 0);
-
- if (inputCount + paddingSize + 8 == 128)
- ProcessBlock(fooBuffer, 64);
- }
-
- ~MD5CryptoServiceProvider()
- {
- Dispose(false);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class MasterDetailRenderer : VisualElementRenderer<MasterDetailPage, FrameworkElement>
- {
- readonly SlideTransition _inTransition = new SlideTransition { Mode = SlideTransitionMode.SlideUpFadeIn };
- readonly SlideTransition _outTransition = new SlideTransition { Mode = SlideTransitionMode.SlideDownFadeOut };
- readonly Border _popup = new Border();
- IVisualElementRenderer _detailRenderer;
- IVisualElementRenderer _masterRenderer;
-
- ITransition _toggleTransition;
-
- public MasterDetailRenderer()
- {
- AutoPackage = false;
- }
-
- public bool Visible { get; private set; }
-
- IPageController PageController => (base.Element as IPageController);
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- UpdateSizes(finalSize.Width, finalSize.Height);
- return base.ArrangeOverride(finalSize);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<MasterDetailPage> e)
- {
- base.OnElementChanged(e);
-
- if (e.OldElement != null)
- e.OldElement.BackButtonPressed -= HandleBackButtonPressed;
-
- if (e.NewElement != null)
- e.NewElement.BackButtonPressed += HandleBackButtonPressed;
-
- LoadDetail();
- LoadMaster();
-
- UpdateSizes(ActualWidth, ActualHeight);
-
- Loaded += (sender, args) =>
- {
- if (base.Element.IsPresented)
- Toggle();
- PageController.SendAppearing();
- };
- Unloaded += (sender, args) =>
- {
- PageController.SendDisappearing();
- if (Visible)
- {
- var platform = (Platform)base.Element.Platform;
- Canvas container = platform.GetCanvas();
-
- container.Children.Remove(_popup);
- }
- };
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == "Detail")
- {
- LoadDetail();
- UpdateSizes(ActualWidth, ActualHeight);
- }
- else if (e.PropertyName == "Master")
- {
- LoadMaster();
- UpdateSizes(ActualWidth, ActualHeight);
- }
- else if (e.PropertyName == MasterDetailPage.IsPresentedProperty.PropertyName)
- {
- if (Visible == base.Element.IsPresented)
- return;
- Toggle();
- }
- }
-
- internal void Toggle()
- {
- var platform = base.Element.Platform as Platform;
- Canvas container = platform.GetCanvas();
-
- if (_toggleTransition != null)
- return;
-
- if (Visible)
- {
- _toggleTransition = _outTransition.GetTransition(_popup);
- _toggleTransition.Begin();
- _toggleTransition.Completed += (sender, args) =>
- {
- _toggleTransition.Stop();
- container.Children.Remove(_popup);
- _toggleTransition = null;
- };
- }
- else
- {
- _popup.Child = _masterRenderer.ContainerElement;
- container.Children.Add(_popup);
-
- _toggleTransition = _inTransition.GetTransition(_popup);
- _toggleTransition.Begin();
-
- _toggleTransition.Completed += (sender, args) =>
- {
- _toggleTransition.Stop();
- _toggleTransition = null;
- };
- }
-
- Visible = !Visible;
-
- ((IElementController)base.Element).SetValueFromRenderer(MasterDetailPage.IsPresentedProperty, Visible);
- }
-
- void HandleBackButtonPressed(object sender, BackButtonPressedEventArgs e)
- {
- if (Visible)
- {
- Toggle();
- e.Handled = true;
- }
- }
-
- void LoadDetail()
- {
- if (_detailRenderer != null)
- Children.Remove(_detailRenderer.ContainerElement);
-
- Page detail = base.Element.Detail;
- if (Platform.GetRenderer(detail) == null)
- Platform.SetRenderer(detail, Platform.CreateRenderer(detail));
-
- _detailRenderer = Platform.GetRenderer(detail);
-
- Children.Clear();
- if (_detailRenderer != null)
- Children.Add(_detailRenderer.ContainerElement);
- }
-
- void LoadMaster()
- {
- if (_masterRenderer != null && _popup != null)
- _popup.Child = null;
-
- Page master = base.Element.Master;
- if (Platform.GetRenderer(master) == null)
- Platform.SetRenderer(master, Platform.CreateRenderer(master));
-
- _masterRenderer = Platform.GetRenderer(master);
- var control = _masterRenderer as Panel;
- if (control != null && master.BackgroundColor == Color.Default)
- control.Background = Color.Black.ToBrush();
- }
-
- void UpdateSizes(double width, double height)
- {
- if (width <= 0 || height <= 0)
- return;
-
- var platform = base.Element.Platform as Platform;
- Size screenSize = platform.Size;
- Element.MasterBounds = new Rectangle(0, 0, screenSize.Width - 20, screenSize.Height - 20);
- Element.DetailBounds = new Rectangle(0, 0, width, height);
-
- _popup.Width = width - 20;
- _popup.Height = height - 20;
-
- Canvas.SetLeft(_popup, 10);
- Canvas.SetTop(_popup, 10);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class NativeViewWrapper : View
- {
- public NativeViewWrapper(FrameworkElement nativeElement, GetDesiredSizeDelegate getDesiredSizeDelegate = null, ArrangeOverrideDelegate arrangeOverrideDelegate = null,
- MeasureOverrideDelegate measureOverrideDelegate = null)
- {
- GetDesiredSizeDelegate = getDesiredSizeDelegate;
- ArrangeOverrideDelegate = arrangeOverrideDelegate;
- MeasureOverrideDelegate = measureOverrideDelegate;
- NativeElement = nativeElement;
- }
-
- public ArrangeOverrideDelegate ArrangeOverrideDelegate { get; set; }
-
- public GetDesiredSizeDelegate GetDesiredSizeDelegate { get; }
-
- public MeasureOverrideDelegate MeasureOverrideDelegate { get; set; }
-
- public FrameworkElement NativeElement { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class NativeViewWrapperRenderer : ViewRenderer<NativeViewWrapper, FrameworkElement>
- {
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- if (Element?.GetDesiredSizeDelegate == null)
- return base.GetDesiredSize(widthConstraint, heightConstraint);
-
- // The user has specified a different implementation of GetDesiredSize
- SizeRequest? result = Element.GetDesiredSizeDelegate(this, widthConstraint, heightConstraint);
-
- // If the delegate returns a SizeRequest, we use it;
- // if it returns null, fall back to the default implementation
- return result ?? base.GetDesiredSize(widthConstraint, heightConstraint);
- }
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- if (Element?.ArrangeOverrideDelegate == null)
- return base.ArrangeOverride(finalSize);
-
- // The user has specified a different implementation of ArrangeOverride
- System.Windows.Size? result = Element.ArrangeOverrideDelegate(this, finalSize);
-
- // If the delegate returns a Size, we use it;
- // if it returns null, fall back to the default implementation
- return result ?? base.ArrangeOverride(finalSize);
- }
-
- protected System.Windows.Size MeasureOverride()
- {
- return MeasureOverride(new System.Windows.Size());
- }
-
- protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
- {
- if (Element?.MeasureOverrideDelegate == null)
- return base.MeasureOverride(availableSize);
-
- // The user has specified a different implementation of MeasureOverride
- System.Windows.Size? result = Element.MeasureOverrideDelegate(this, availableSize);
-
- // If the delegate returns a Size, we use it;
- // if it returns null, fall back to the default implementation
- return result ?? base.MeasureOverride(availableSize);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<NativeViewWrapper> e)
- {
- base.OnElementChanged(e);
-
- if (e.OldElement == null)
- {
- SetNativeControl(Element.NativeElement);
- Control.LayoutUpdated += (sender, args) => { ((IVisualElementController)Element)?.InvalidateMeasure(InvalidationTrigger.MeasureChanged); };
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Windows.Media.Imaging;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal class NavigationMenuRenderer : ViewRenderer<NavigationMenu, System.Windows.Controls.Grid>
- {
- const int Spacing = 12;
-
- protected override void OnElementChanged(ElementChangedEventArgs<NavigationMenu> e)
- {
- base.OnElementChanged(e);
-
- var grid = new System.Windows.Controls.Grid();
- grid.ColumnDefinitions.Add(new System.Windows.Controls.ColumnDefinition { Width = System.Windows.GridLength.Auto });
- grid.ColumnDefinitions.Add(new System.Windows.Controls.ColumnDefinition { Width = System.Windows.GridLength.Auto });
-
- UpdateItems(grid);
- SetNativeControl(grid);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- switch (e.PropertyName)
- {
- case "Targets":
- UpdateItems(Control);
- break;
- }
- }
-
- TileSize GetSize()
- {
- return RenderSize.Width >= 210 * 2 + Spacing ? TileSize.Medium : TileSize.Default;
- }
-
- void UpdateItems(System.Windows.Controls.Grid grid)
- {
- grid.Children.Clear();
-
- grid.RowDefinitions.Clear();
-
- var x = 0;
- var y = 0;
- foreach (Page target in Element.Targets)
- {
- if (x > 1)
- {
- x = 0;
- y++;
- }
-
- if (x == 0)
- grid.RowDefinitions.Add(new System.Windows.Controls.RowDefinition());
-
- var hubTile = new HubTile { Title = target.Title, Source = new BitmapImage(new Uri(target.Icon, UriKind.Relative)), Margin = new System.Windows.Thickness(0, 0, Spacing, Spacing) };
-
- if (target.BackgroundColor != Color.Default)
- hubTile.Background = target.BackgroundColor.ToBrush();
-
- Page tmp = target;
- hubTile.Tap += (sender, args) => Element.SendTargetSelected(tmp);
-
- hubTile.SetValue(System.Windows.Controls.Grid.RowProperty, y);
- hubTile.SetValue(System.Windows.Controls.Grid.ColumnProperty, x);
- hubTile.Size = GetSize();
-
- var weakRef = new WeakReference(hubTile);
- SizeChanged += (sender, args) =>
- {
- var hTile = (HubTile)weakRef.Target;
- if (hTile != null)
- hTile.Size = GetSize();
- ((IVisualElementController)Element).NativeSizeChanged();
- };
-
- x++;
- grid.Children.Add(hubTile);
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Linq;
-using System.Windows;
-using System.Windows.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class NavigationPageRenderer : VisualElementRenderer<NavigationPage, FrameworkElement>
- {
- Page _currentRoot;
- bool _isRemoving;
-
- public NavigationPageRenderer()
- {
- AutoPackage = false;
- }
-
- IPageController PageController => Element as IPageController;
- IElementController ElementController => Element as IElementController;
-
- protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
- {
- base.OnElementChanged(e);
-
- Debug.WriteLine("Warning, Windows Phone backend does not support NavigationPage, falling back to global navigation.");
-
- Action init = () =>
- {
- var navController = (INavigationPageController)Element;
-
- navController.PushRequested += PageOnPushed;
- navController.PopRequested += PageOnPopped;
- navController.PopToRootRequested += PageOnPoppedToRoot;
- navController.RemovePageRequested += RemovePageRequested;
- navController.InsertPageBeforeRequested += ElementOnInsertPageBeforeRequested;
- Element.PropertyChanged += OnElementPropertyChanged;
-
- var platform = (Platform)Element.Platform;
-
- PageController.ContainerArea = new Rectangle(new Point(0, 0), platform.Size);
-
- platform.SizeChanged += (sender, args) => PageController.ContainerArea = new Rectangle(new Point(0, 0), platform.Size);
-
- List<Page> stack = GetStack();
- if (stack.Count > 0)
- UpdateRootPage(stack);
- else
- return;
-
- Device.BeginInvokeOnMainThread(() =>
- {
- for (var i = 0; i < stack.Count; i++)
- PageOnPushed(this, new NavigationRequestedEventArgs(stack[i], false, i != 0));
- });
- };
-
- if (Element.Platform == null)
- Element.PlatformSet += (sender, args) => init();
- else
- init();
-
- Loaded += (sender, args) => PageController.SendAppearing();
- Unloaded += OnUnloaded;
- }
-
- void ElementOnInsertPageBeforeRequested(object sender, NavigationRequestedEventArgs eventArgs)
- {
- if (Element.Platform == null)
- return;
- var platform = Element.Platform as Platform;
- if (platform != null)
- ((INavigation)platform).InsertPageBefore(eventArgs.Page, eventArgs.BeforePage);
-
- List<Page> stack = GetStack();
- stack.Insert(stack.IndexOf(eventArgs.BeforePage), eventArgs.Page);
-
- UpdateRootPage(stack);
- }
-
- List<Page> GetStack()
- {
- int count = PageController.InternalChildren.Count;
- var stack = new List<Page>(count);
- for (var i = 0; i < count; i++)
- stack.Add((Page)PageController.InternalChildren[i]);
-
- return stack;
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName != "Parent" || Element.RealParent != null)
- return;
-
- var platform = Element.Platform as Platform;
-
- if (platform == null)
- return;
-
- for (var i = 0; i < ElementController.LogicalChildren.Count; i++)
- {
- var page = ElementController.LogicalChildren[i] as Page;
- if (page != null)
- platform.RemovePage(page, false);
- }
- }
-
- void OnUnloaded(object sender, RoutedEventArgs args)
- {
- PageController.SendDisappearing();
- }
-
- void PageOnPopped(object sender, NavigationRequestedEventArgs eventArg)
- {
- if (Element.Platform == null)
- return;
- var platform = Element.Platform as Platform;
- if (platform != null)
- eventArg.Task = platform.Pop(Element, eventArg.Animated).ContinueWith((t, o) => true, null);
- }
-
- void PageOnPoppedToRoot(object sender, NavigationRequestedEventArgs eventArgs)
- {
- if (Element.Platform == null)
- return;
- var platform = Element.Platform as Platform;
- if (platform != null)
- eventArgs.Task = platform.PopToRoot(Element, eventArgs.Animated).ContinueWith((t, o) => true, null);
- }
-
- void PageOnPushed(object sender, NavigationRequestedEventArgs e)
- {
- if (Element.Platform == null)
- return;
- var platform = Element.Platform as Platform;
- if (platform != null)
- {
- if (e.Page == ((INavigationPageController)Element).Pages.FirstOrDefault())
- ((IPageController)e.Page).IgnoresContainerArea = true;
- e.Task = platform.PushCore(e.Page, Element, e.Animated, e.Realize).ContinueWith((t, o) => true, null);
- }
- }
-
- void RemovePageRequested(object sender, NavigationRequestedEventArgs eventArgs)
- {
- if (Element.Platform == null)
- return;
- var platform = Element.Platform as Platform;
- if (platform != null)
- ((INavigation)platform).RemovePage(eventArgs.Page);
-
- List<Page> stack = GetStack();
- stack.Remove(eventArgs.Page);
- _isRemoving = true;
- UpdateRootPage(stack);
- _isRemoving = false;
- }
-
- void UpdateRootPage(IReadOnlyList<Page> stack)
- {
- Page first = stack.FirstOrDefault();
- if (first == _currentRoot)
- return;
-
- if (Children.Count > 0)
- {
- var renderer = Children[0] as IVisualElementRenderer;
- if (renderer != null)
- {
- Children.RemoveAt(0);
-
- var page = renderer.Element as IPageController;
- if (page != null)
- page.IgnoresContainerArea = false;
-
- if (!stack.Contains(renderer.Element))
- Platform.SetRenderer(renderer.Element, null);
- }
- }
-
- _currentRoot = first;
-
- if (first == null)
- return;
-
- ((IPageController)first).IgnoresContainerArea = true;
-
- IVisualElementRenderer firstRenderer = Platform.GetRenderer(first);
- if (firstRenderer == null)
- {
- firstRenderer = Platform.CreateRenderer(first);
- Platform.SetRenderer(first, firstRenderer);
- }
- var uiElement = (UIElement)firstRenderer;
- var platform = Element.Platform as Platform;
- Canvas canvas = platform?.GetCanvas();
-
- //We could be swapping the visible page,
- //so let's make sure we remove it
- if (canvas.Children.Contains(uiElement))
- canvas.Children.Remove(uiElement);
- Children.Add(uiElement);
-
- // we removed the previous root page, and the new root page is the one being presented
- // at this time there's only 1 page now on the stack (the navigationpage with root)
- // we need to update the platform to set this root page as the visible again
- bool updateRoot = Element.CurrentPage == first && _isRemoving;
- if (updateRoot)
- platform.SetCurrent(Element, false);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class PageRenderer : VisualElementRenderer<Page, Panel>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
- {
- // Set prior to calling base
- Tracker = new BackgroundTracker<Panel>(BackgroundProperty) { Model = Element, Element = this };
-
- base.OnElementChanged(e);
-
- Loaded += (sender, args) => ((IPageController)Element).SendAppearing();
- Unloaded += (sender, args) => ((IPageController)Element).SendDisappearing();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class PageToRendererConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var page = value as Page;
- if (page == null)
- return null;
-
- IVisualElementRenderer renderer = Platform.CreateRenderer(page);
- Platform.SetRenderer(page, renderer);
- return renderer;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Reflection;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class PickerRenderer : ViewRenderer<Picker, FrameworkElement>
- {
- bool _isChanging;
- FormsListPicker _listPicker;
- Brush _defaultBrush;
-
- IElementController ElementController => Element as IElementController;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
- {
- _listPicker = new FormsListPicker();
-
- UpdateAlignment();
- UpdateIsEnabled();
-
- base.OnElementChanged(e);
-
- if (e.OldElement != null)
- ((INotifyCollectionChanged)Element.Items).CollectionChanged -= ItemsCollectionChanged;
-
- ((INotifyCollectionChanged)Element.Items).CollectionChanged += ItemsCollectionChanged;
-
- _listPicker.ItemTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["PickerItemTemplate"];
- _listPicker.FullModeItemTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["PickerFullItemTemplate"];
- _listPicker.ExpansionMode = ExpansionMode.FullScreenOnly;
- _listPicker.Items.Add(new ItemViewModel(" ") { MaxHeight = 0 });
-
- _listPicker.ListPickerModeChanged += ListPickerModeChanged;
- _listPicker.Loaded += (sender, args) => {
- // The defaults from the control template won't be available
- // right away; we have to wait until after the template has been applied
- _defaultBrush = _listPicker.Foreground;
- UpdateTextColor();
- };
-
- var grid = new System.Windows.Controls.Grid { Children = { _listPicker }, MaxWidth = Device.Info.PixelScreenSize.Width };
- SetNativeControl(grid);
-
- UpdatePicker();
- _listPicker.SelectionChanged += PickerSelectionChanged;
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Picker.TitleProperty.PropertyName)
- {
- _listPicker.FullModeHeader = Element.Title;
- }
- else if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
- {
- UpdateIsEnabled();
- UpdateTextColor();
- }
- else if (e.PropertyName == Picker.SelectedIndexProperty.PropertyName)
- {
- if (Element.SelectedIndex >= 0 && Element.SelectedIndex < Element.Items.Count)
- _listPicker.SelectedIndex = Element.SelectedIndex + 1;
- }
- else if (e.PropertyName == View.HorizontalOptionsProperty.PropertyName)
- {
- UpdateAlignment();
- }
- else if (e.PropertyName == Picker.TextColorProperty.PropertyName)
- {
- UpdateTextColor();
- }
- }
-
- protected override void OnGotFocus(object sender, RoutedEventArgs args)
- {
- // Do nothing. ListPickerModeChanged is handling the IsFocusProperty setter
- // Required because FrameworkElement.GotFocus and FrameworkElement.LostFocus () are fired by ListPicker.Open ()
- }
-
- protected override void OnLostFocus(object sender, RoutedEventArgs args)
- {
- // Do nothing. ListPickerModeChanged is handling the IsFocusProperty setter
- // Required because FrameworkElement.GotFocus and FrameworkElement.LostFocus () are fired by ListPicker.Open ()
- }
-
- protected override void UpdateNativeWidget()
- {
- base.UpdateNativeWidget();
- UpdateIsEnabled();
- }
-
- internal override void OnModelFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
- {
- if (Control == null)
- return;
-
- if (args.Focus)
- args.Result = OpenPickerPage();
- else
- {
- args.Result = ClosePickerPage();
- UnfocusControl(_listPicker);
- }
- }
-
- bool ClosePickerPage()
- {
- FieldInfo pickerPageField = typeof(ListPicker).GetField("_listPickerPage", BindingFlags.NonPublic | BindingFlags.Instance);
- var pickerPage = pickerPageField.GetValue(Control) as ListPickerPage;
- typeof(ListPickerPage).InvokeMember("ClosePickerPage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, Type.DefaultBinder, pickerPage, null);
-
- return true;
- }
-
- void ItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- UpdateItems();
- }
-
- void ListPickerModeChanged(object sender, DependencyPropertyChangedEventArgs e)
- {
- if (e.OldValue == null || e.NewValue == null)
- return;
-
- var oldVal = (ListPickerMode)e.OldValue;
- var newVal = (ListPickerMode)e.NewValue;
-
- if (oldVal == ListPickerMode.Normal && newVal == ListPickerMode.Full)
- {
- // Picker Page is now showing
- ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true);
- }
- else if (oldVal == ListPickerMode.Full && newVal == ListPickerMode.Normal)
- {
- // PickerPage is now dismissed
- ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
- }
- }
-
- bool OpenPickerPage()
- {
- bool result = _listPicker.Open();
-
- if (result)
- return true;
-
- return false;
- }
-
- void PickerSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (_isChanging)
- return;
-
- var picker = (ListPicker)sender;
-
- // initializing picker
- if (picker.SelectedIndex == -1)
- return;
-
- int elementSelectedIndex = picker.SelectedIndex - 1;
- ElementController.SetValueFromRenderer(Picker.SelectedIndexProperty, elementSelectedIndex);
- }
-
- void UpdateAlignment()
- {
- if (Element.HorizontalOptions.Alignment != LayoutAlignment.Fill)
- _listPicker.HorizontalAlignment = HorizontalAlignment.Left;
- }
-
- void UpdateIsEnabled()
- {
- if (_listPicker != null)
- _listPicker.IsEnabled = Element.IsEnabled;
- }
-
- void UpdateItems()
- {
- // supress notification of non-user generated events (e.g. adding\syncing list values)
- _isChanging = true;
- FormsListPicker picker = _listPicker;
- // add/remove slots from control to match element
- while (picker.Items.Count < Element.Items.Count + 1)
- picker.Items.Add(new ItemViewModel(string.Empty));
-
- while (picker.Items.Count > Element.Items.Count + 1)
- picker.Items.RemoveAt(picker.Items.Count - 1);
-
- // update all control values to match element values
- for (var i = 0; i < Element.Items.Count; i++)
- {
- var item = (ItemViewModel)picker.Items[i + 1];
- if (item.Data == Element.Items[i])
- continue;
-
- item.Data = Element.Items[i];
- }
-
- picker.SelectedIndex = Element.SelectedIndex + 1;
-
- _isChanging = false;
- }
-
- void UpdatePicker()
- {
- _listPicker.FullModeHeader = Element.Title;
- UpdateItems();
- _listPicker.SelectedIndex = Element.SelectedIndex + 1;
- }
-
- void UpdateTextColor()
- {
- if (!_listPicker.IsEnabled)
- {
- return;
- }
-
- Color color = Element.TextColor;
- _listPicker.Foreground = color.IsDefault ? (_defaultBrush ?? color.ToBrush()) : color.ToBrush();
- }
-
- class ItemViewModel : INotifyPropertyChanged
- {
- string _data;
- int _maxHeight;
- float _opacity;
-
- public ItemViewModel(string item)
- {
- _opacity = 1;
- _data = item;
- _maxHeight = int.MaxValue;
- }
-
- public string Data
- {
- get { return _data; }
- set
- {
- if (value == _data)
- return;
-
- _data = value;
- PropertyChanged(this, new PropertyChangedEventArgs("Data"));
- }
- }
-
- public int MaxHeight
- {
- get { return _maxHeight; }
- set
- {
- if (value == _maxHeight)
- return;
-
- _maxHeight = value;
- PropertyChanged(this, new PropertyChangedEventArgs("MaxHeight"));
- }
- }
-
- public float Opacity
- {
- get { return _opacity; }
- set
- {
- if (value == _opacity)
- return;
-
- _opacity = value;
- PropertyChanged(this, new PropertyChangedEventArgs("Opacity"));
- }
- }
-
- public event PropertyChangedEventHandler PropertyChanged = delegate { };
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- // from mono
- public class Platform : BindableObject, IPlatform, INavigation
- {
- internal static readonly BindableProperty RendererProperty = BindableProperty.CreateAttached("Renderer", typeof(IVisualElementRenderer), typeof(Platform), default(IVisualElementRenderer));
-
- readonly TurnstileTransition _backwardInTransition = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardIn };
-
- readonly TurnstileTransition _backwardOutTransition = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardOut };
-
- readonly TurnstileTransition _forwardInTransition = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardIn };
-
- readonly TurnstileTransition _forwardOutTransition = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardOut };
-
- readonly NavigationModel _navModel = new NavigationModel();
-
- readonly PhoneApplicationPage _page;
-
- readonly Canvas _renderer;
- readonly ToolbarTracker _tracker = new ToolbarTracker();
-
- Page _currentDisplayedPage;
- CustomMessageBox _visibleMessageBox;
-
- internal Platform(PhoneApplicationPage page)
- {
- _tracker.SeparateMasterDetail = true;
-
- page.BackKeyPress += OnBackKeyPress;
- _page = page;
-
- _renderer = new Canvas();
- _renderer.SizeChanged += RendererSizeChanged;
- _renderer.Loaded += (sender, args) => UpdateSystemTray();
-
- _tracker.CollectionChanged += (sender, args) => UpdateToolbarItems();
-
- ProgressIndicator indicator;
- SystemTray.SetProgressIndicator(page, indicator = new ProgressIndicator { IsVisible = false, IsIndeterminate = true });
-
- var busyCount = 0;
- MessagingCenter.Subscribe(this, Page.BusySetSignalName, (Page sender, bool enabled) =>
- {
- busyCount = Math.Max(0, enabled ? busyCount + 1 : busyCount - 1);
- indicator.IsVisible = busyCount > 0;
- });
-
- MessagingCenter.Subscribe(this, Page.AlertSignalName, (Page sender, AlertArguments arguments) =>
- {
- var messageBox = new CustomMessageBox { Title = arguments.Title, Message = arguments.Message };
- if (arguments.Accept != null)
- messageBox.LeftButtonContent = arguments.Accept;
- messageBox.RightButtonContent = arguments.Cancel;
- messageBox.Show();
- _visibleMessageBox = messageBox;
- messageBox.Dismissed += (o, args) =>
- {
- arguments.SetResult(args.Result == CustomMessageBoxResult.LeftButton);
- _visibleMessageBox = null;
- };
- });
-
- MessagingCenter.Subscribe(this, Page.ActionSheetSignalName, (Page sender, ActionSheetArguments arguments) =>
- {
- var messageBox = new CustomMessageBox { Title = arguments.Title };
-
- var listBox = new ListBox { FontSize = 36, Margin = new System.Windows.Thickness(12) };
- var itemSource = new List<string>();
-
- if (!string.IsNullOrWhiteSpace(arguments.Destruction))
- itemSource.Add(arguments.Destruction);
- itemSource.AddRange(arguments.Buttons);
- if (!string.IsNullOrWhiteSpace(arguments.Cancel))
- itemSource.Add(arguments.Cancel);
-
- listBox.ItemsSource = itemSource.Select(s => new TextBlock { Text = s, Margin = new System.Windows.Thickness(0, 12, 0, 12) });
- messageBox.Content = listBox;
-
- listBox.SelectionChanged += (o, args) => messageBox.Dismiss();
- messageBox.Dismissed += (o, args) =>
- {
- string result = listBox.SelectedItem != null ? ((TextBlock)listBox.SelectedItem).Text : null;
- arguments.SetResult(result);
- _visibleMessageBox = null;
- };
-
- messageBox.Show();
- _visibleMessageBox = messageBox;
- });
- }
-
- internal Size Size
- {
- get { return new Size(_renderer.ActualWidth, _renderer.ActualHeight); }
- }
-
- Page Page { get; set; }
-
- void INavigation.InsertPageBefore(Page page, Page before)
- {
- _navModel.InsertPageBefore(page, before);
- }
-
- IReadOnlyList<Page> INavigation.ModalStack
- {
- get { return _navModel.Roots.ToList(); }
- }
-
- IReadOnlyList<Page> INavigation.NavigationStack
- {
- get { return _navModel.Tree.Last(); }
- }
-
- Task<Page> INavigation.PopAsync()
- {
- return ((INavigation)this).PopAsync(true);
- }
-
- Task<Page> INavigation.PopAsync(bool animated)
- {
- return Pop(Page, animated);
- }
-
- Task<Page> INavigation.PopModalAsync()
- {
- return ((INavigation)this).PopModalAsync(true);
- }
-
- Task<Page> INavigation.PopModalAsync(bool animated)
- {
- var tcs = new TaskCompletionSource<Page>();
- Page result = _navModel.PopModal();
-
- IReadOnlyList<Page> last = _navModel.Tree.Last();
- IEnumerable<Page> stack = last;
- if (last.Count > 1)
- stack = stack.Skip(1);
-
- Page navRoot = stack.First();
- Page current = _navModel.CurrentPage;
- if (current == navRoot)
- current = _navModel.Roots.Last(); // Navigation page itself, since nav root has a host
-
- SetCurrent(current, animated, true, () => tcs.SetResult(result));
- return tcs.Task;
- }
-
- Task INavigation.PopToRootAsync()
- {
- return ((INavigation)this).PopToRootAsync(true);
- }
-
- async Task INavigation.PopToRootAsync(bool animated)
- {
- await PopToRoot(Page, animated);
- }
-
- Task INavigation.PushAsync(Page root)
- {
- return ((INavigation)this).PushAsync(root, true);
- }
-
- Task INavigation.PushAsync(Page root, bool animated)
- {
- return Push(root, Page, animated);
- }
-
- Task INavigation.PushModalAsync(Page modal)
- {
- return ((INavigation)this).PushModalAsync(modal, true);
- }
-
- Task INavigation.PushModalAsync(Page modal, bool animated)
- {
- var tcs = new TaskCompletionSource<object>();
- _navModel.PushModal(modal);
- SetCurrent(_navModel.CurrentPage, animated, completedCallback: () => tcs.SetResult(null));
- return tcs.Task;
- }
-
- void INavigation.RemovePage(Page page)
- {
- RemovePage(page, true);
- }
-
- SizeRequest IPlatform.GetNativeSize(VisualElement view, double widthConstraint, double heightConstraint)
- {
- // Hack around the fact that Canvas ignores the child constraints.
- // It is entirely possible using Canvas as our base class is not wise.
- // FIXME: This should not be an if statement. Probably need to define an interface here.
- if (widthConstraint > 0 && heightConstraint > 0 && GetRenderer(view) != null)
- {
- IVisualElementRenderer element = GetRenderer(view);
- return element.GetDesiredSize(widthConstraint, heightConstraint);
- }
-
- return new SizeRequest();
- }
-
- public static IVisualElementRenderer CreateRenderer(VisualElement element)
- {
- IVisualElementRenderer result = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element) ?? new ViewRenderer();
- result.SetElement(element);
- return result;
- }
-
- public static IVisualElementRenderer GetRenderer(VisualElement self)
- {
- return (IVisualElementRenderer)self.GetValue(RendererProperty);
- }
-
- public static void SetRenderer(VisualElement self, IVisualElementRenderer renderer)
- {
- self.SetValue(RendererProperty, renderer);
- self.IsPlatformEnabled = renderer != null;
- }
-
- internal Canvas GetCanvas()
- {
- return _renderer;
- }
-
- internal async Task<Page> Pop(Page ancestor, bool animated)
- {
- Page result = _navModel.Pop(ancestor);
-
- Page navRoot = _navModel.Tree.Last().Skip(1).First();
- Page current = _navModel.CurrentPage;
-
- // The following code is a terrible horrible ugly hack that we are kind of stuck with for the time being
- // Effectively what can happen is a TabbedPage with many navigation page children needs to have all those children in the
- // nav stack. If you have multiple each of those roots needs to be skipped over.
-
- // In general the check for the NavigationPage will always hit if the check for the Skip(1) hits, but since that check
- // was always there it is left behind to ensure compatibility with previous behavior.
- bool replaceWithRoot = current == navRoot;
- var parent = current.Parent as NavigationPage;
- if (parent != null)
- {
- if (((IPageController)parent).InternalChildren[0] == current)
- replaceWithRoot = true;
- }
-
- if (replaceWithRoot)
- current = _navModel.Roots.Last(); // Navigation page itself, since nav root has a host
-
- await SetCurrent(current, animated, true);
- return result;
- }
-
- internal async Task PopToRoot(Page ancestor, bool animated)
- {
- _navModel.PopToRoot(ancestor);
- await SetCurrent(_navModel.CurrentPage, animated, true);
- }
-
- internal async Task PushCore(Page root, Page ancester, bool animated, bool realize = true)
- {
- _navModel.Push(root, ancester);
- if (realize)
- await SetCurrent(_navModel.CurrentPage, animated);
-
- if (root.NavigationProxy.Inner == null)
- root.NavigationProxy.Inner = this;
- }
-
- internal async void RemovePage(Page page, bool popCurrent)
- {
- if (popCurrent && _navModel.CurrentPage == page)
- await ((INavigation)this).PopAsync();
- else
- _navModel.RemovePage(page);
- }
-
- internal Task SetCurrent(Page page, bool animated, bool popping = false, Action completedCallback = null)
- {
- var tcs = new TaskCompletionSource<bool>();
- if (page == _currentDisplayedPage)
- {
- tcs.SetResult(true);
- return tcs.Task;
- }
-
- if (!animated)
- tcs.SetResult(true);
-
- page.Platform = this;
-
- if (GetRenderer(page) == null)
- SetRenderer(page, CreateRenderer(page));
-
- page.Layout(new Rectangle(0, 0, _renderer.ActualWidth, _renderer.ActualHeight));
- IVisualElementRenderer pageRenderer = GetRenderer(page);
- if (pageRenderer != null)
- {
- ((FrameworkElement)pageRenderer.ContainerElement).Width = _renderer.ActualWidth;
- ((FrameworkElement)pageRenderer.ContainerElement).Height = _renderer.ActualHeight;
- }
-
- Page current = _currentDisplayedPage;
- UIElement currentElement = null;
- if (current != null)
- currentElement = (UIElement)GetRenderer(current);
-
- if (popping)
- {
- ITransition transitionOut = null;
- if (current != null)
- {
- if (animated)
- transitionOut = _backwardOutTransition.GetTransition(currentElement);
- else
- _renderer.Children.Remove(currentElement);
- }
-
- var pageElement = (UIElement)GetRenderer(page);
-
- if (animated)
- {
- transitionOut.Completed += (s, e) =>
- {
- transitionOut.Stop();
- _renderer.Children.Remove(currentElement);
- UpdateToolbarTracker();
-
- _renderer.Children.Add(pageElement);
-
- ITransition transitionIn = _backwardInTransition.GetTransition(pageElement);
- transitionIn.Completed += (si, ei) =>
- {
- transitionIn.Stop();
- if (completedCallback != null)
- completedCallback();
-
- tcs.SetResult(true);
- };
- transitionIn.Begin();
- };
-
- transitionOut.Begin();
- }
- else
- {
- UpdateToolbarTracker();
- _renderer.Children.Add(pageElement);
- if (completedCallback != null)
- completedCallback();
- }
- }
- else
- {
- ITransition transitionOut = null;
- if (current != null)
- {
- if (animated)
- transitionOut = _forwardOutTransition.GetTransition(currentElement);
- else
- _renderer.Children.Remove(currentElement);
- }
-
- if (animated)
- {
- if (transitionOut != null)
- {
- transitionOut.Completed += (o, e) =>
- {
- _renderer.Children.Remove(currentElement);
- transitionOut.Stop();
-
- UpdateToolbarTracker();
-
- var element = (UIElement)GetRenderer(page);
- _renderer.Children.Add(element);
- ITransition transitionIn = _forwardInTransition.GetTransition(element);
- transitionIn.Completed += (s, ie) =>
- {
- transitionIn.Stop();
- if (completedCallback != null)
- completedCallback();
- tcs.SetResult(true);
- };
- transitionIn.Begin();
- };
-
- transitionOut.Begin();
- }
- else
- {
- UpdateToolbarTracker();
-
- _renderer.Children.Add((UIElement)GetRenderer(page));
- ITransition transitionIn = _forwardInTransition.GetTransition((UIElement)GetRenderer(page));
- transitionIn.Completed += (s, e) =>
- {
- transitionIn.Stop();
- if (completedCallback != null)
- completedCallback();
-
- tcs.SetResult(true);
- };
- transitionIn.Begin();
- }
- }
- else
- {
- _renderer.Children.Add((UIElement)GetRenderer(page));
- UpdateToolbarTracker();
- if (completedCallback != null)
- completedCallback();
- }
- }
-
- _currentDisplayedPage = page;
-
- return tcs.Task;
- }
-
- internal void SetPage(Page newRoot)
- {
- if (newRoot == null)
- return;
-
- Page = newRoot;
- _navModel.Clear();
- _navModel.PushModal(newRoot);
- SetCurrent(newRoot, false, true);
-
- Application.Current.NavigationProxy.Inner = this;
- }
-
- internal event EventHandler SizeChanged;
-
- void OnBackKeyPress(object sender, CancelEventArgs e)
- {
- if (_visibleMessageBox != null)
- {
- _visibleMessageBox.Dismiss();
- e.Cancel = true;
- return;
- }
-
- Page lastRoot = _navModel.Roots.Last();
-
- bool handled = lastRoot.SendBackButtonPressed();
-
- e.Cancel = handled;
- }
-
- Task Push(Page root, Page ancester, bool animated)
- {
- return PushCore(root, ancester, animated);
- }
-
- void RendererSizeChanged(object sender, SizeChangedEventArgs e)
- {
- UpdateFormSizes();
- EventHandler handler = SizeChanged;
- if (handler != null)
- handler(this, EventArgs.Empty);
- }
-
- void UpdateFormSizes()
- {
- foreach (Page f in _navModel.Roots)
- {
- f.Layout(new Rectangle(0, 0, _renderer.ActualWidth, _renderer.ActualHeight));
-#pragma warning disable 618
- IVisualElementRenderer pageRenderer = f.GetRenderer();
-#pragma warning restore 618
- if (pageRenderer != null)
- {
- ((FrameworkElement)pageRenderer.ContainerElement).Width = _renderer.ActualWidth;
- ((FrameworkElement)pageRenderer.ContainerElement).Height = _renderer.ActualHeight;
- }
- }
- }
-
- void UpdateSystemTray()
- {
- var lightThemeVisibility = (Visibility)System.Windows.Application.Current.Resources["PhoneLightThemeVisibility"];
- if (lightThemeVisibility == Visibility.Visible && SystemTray.BackgroundColor == System.Windows.Media.Color.FromArgb(0, 0, 0, 0))
- {
- SystemTray.BackgroundColor = System.Windows.Media.Color.FromArgb(1, 255, 255, 255);
- }
- }
-
- void UpdateToolbarItems()
- {
- if (_page.ApplicationBar == null)
- _page.ApplicationBar = new ApplicationBar();
-
- ToolbarItem[] items = _tracker.ToolbarItems.ToArray();
- MasterDetailPage masterDetail = _tracker.Target.Descendants().Prepend(_tracker.Target).OfType<MasterDetailPage>().FirstOrDefault();
-
- TaggedAppBarButton oldMasterDetailButton = _page.ApplicationBar.Buttons.OfType<TaggedAppBarButton>().FirstOrDefault(b => b.Tag is MasterDetailPage && b.Tag != masterDetail);
-
- if (oldMasterDetailButton != null)
- _page.ApplicationBar.Buttons.Remove(oldMasterDetailButton);
-
- if (masterDetail != null)
- {
- if (masterDetail.ShouldShowToolbarButton())
- {
- if (_page.ApplicationBar.Buttons.OfType<TaggedAppBarButton>().All(b => b.Tag != masterDetail))
- {
- var button = new TaggedAppBarButton
- {
- IconUri = new Uri(masterDetail.Master.Icon ?? "ApplicationIcon.jpg", UriKind.Relative),
- Text = masterDetail.Master.Title,
- IsEnabled = true,
- Tag = masterDetail
- };
- button.Click += (sender, args) =>
- {
- var masterDetailRenderer = GetRenderer(masterDetail) as MasterDetailRenderer;
-
- if (masterDetailRenderer != null)
- masterDetailRenderer.Toggle();
- };
- _page.ApplicationBar.Buttons.Add(button);
- }
- }
- }
-
- var buttonsToAdd = new List<TaggedAppBarButton>();
- foreach (ToolbarItem item in items.Where(i => i.Order != ToolbarItemOrder.Secondary))
- {
- if (_page.ApplicationBar.Buttons.OfType<TaggedAppBarButton>().Any(b => b.Tag == item))
- continue;
-
- var button = new TaggedAppBarButton
- {
- IconUri = new Uri(item.Icon ?? "ApplicationIcon.jpg", UriKind.Relative),
- Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "ApplicationIcon.jpg",
- IsEnabled = item.IsEnabled,
- Tag = item
- };
- button.Click += (sender, args) => item.Activate();
- buttonsToAdd.Add(button);
- }
-
- var menuItemsToAdd = new List<TaggedAppBarMenuItem>();
- foreach (ToolbarItem item in items.Where(i => i.Order == ToolbarItemOrder.Secondary))
- {
- if (_page.ApplicationBar.MenuItems.OfType<TaggedAppBarMenuItem>().Any(b => b.Tag == item))
- continue;
-
- var button = new TaggedAppBarMenuItem { Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "MenuItem", IsEnabled = true, Tag = item };
- button.Click += (sender, args) => item.Activate();
- menuItemsToAdd.Add(button);
- }
-
- TaggedAppBarButton[] deadButtons = _page.ApplicationBar.Buttons.OfType<TaggedAppBarButton>().Where(b => b.Tag is ToolbarItem && !items.Contains(b.Tag)).ToArray();
-
- TaggedAppBarMenuItem[] deadMenuItems = _page.ApplicationBar.MenuItems.OfType<TaggedAppBarMenuItem>().Where(b => b.Tag is ToolbarItem && !items.Contains(b.Tag)).ToArray();
-
- // we must remove the dead buttons before adding the new ones so we don't accidentally go over the limit during the transition
- foreach (TaggedAppBarButton deadButton in deadButtons)
- {
- deadButton.Dispose();
- _page.ApplicationBar.Buttons.Remove(deadButton);
- }
-
- foreach (TaggedAppBarMenuItem deadMenuItem in deadMenuItems)
- _page.ApplicationBar.MenuItems.Remove(deadMenuItem);
-
- // fixme, insert in order
- foreach (TaggedAppBarButton newButton in buttonsToAdd)
- _page.ApplicationBar.Buttons.Add(newButton);
-
- foreach (TaggedAppBarMenuItem newMenuItem in menuItemsToAdd)
- _page.ApplicationBar.MenuItems.Add(newMenuItem);
-
- _page.ApplicationBar.IsVisible = _page.ApplicationBar.Buttons.Count > 0 || _page.ApplicationBar.MenuItems.Count > 0;
- }
-
- void UpdateToolbarTracker()
- {
- if (_navModel.Roots.Last() != null)
- _tracker.Target = _navModel.Roots.Last();
- }
-
- class TaggedAppBarButton : ApplicationBarIconButton, IDisposable
- {
- bool _disposed;
- object _tag;
-
- public object Tag
- {
- get { return _tag; }
- set
- {
- if (_tag == null && value is ToolbarItem)
- (value as ToolbarItem).PropertyChanged += TaggedAppBarButton_PropertyChanged;
- _tag = value;
- }
- }
-
- public void Dispose()
- {
- if (_disposed)
- return;
- _disposed = true;
-
- if (Tag != null && Tag is ToolbarItem)
- (Tag as ToolbarItem).PropertyChanged -= TaggedAppBarButton_PropertyChanged;
- }
-
- void TaggedAppBarButton_PropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- var item = Tag as ToolbarItem;
- if (item == null)
- return;
-
- if (e.PropertyName == item.IsEnabledPropertyName)
- IsEnabled = item.IsEnabled;
- else if (e.PropertyName == MenuItem.TextProperty.PropertyName)
- Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "ApplicationIcon.jpg";
- else if (e.PropertyName == MenuItem.IconProperty.PropertyName)
- IconUri = new Uri(item.Icon ?? "ApplicationIcon.jpg", UriKind.Relative);
- }
- }
-
- class TaggedAppBarMenuItem : ApplicationBarMenuItem
- {
- public object Tag { get; set; }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public abstract class PlatformEffect : PlatformEffect<FrameworkElement, FrameworkElement>
- {
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ProgressBarRenderer : ViewRenderer<ProgressBar, System.Windows.Controls.ProgressBar>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<ProgressBar> e)
- {
- base.OnElementChanged(e);
-
- var progressBar = new System.Windows.Controls.ProgressBar { Minimum = 0, Maximum = 1, Value = Element.Progress };
- progressBar.ValueChanged += ProgressBarOnValueChanged;
-
- SetNativeControl(progressBar);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- switch (e.PropertyName)
- {
- case "Progress":
- Control.Value = Element.Progress;
- break;
- }
- }
-
- void ProgressBarOnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> routedPropertyChangedEventArgs)
- {
- ((IVisualElementController)Element)?.InvalidateMeasure(InvalidationTrigger.MeasureChanged);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using Xamarin.Forms;
-using Xamarin.Forms.Internals;
-using Xamarin.Forms.Platform.WinPhone;
-using TableView = Xamarin.Forms.TableView;
-
-// 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("Xamarin.Forms.Platform.WP8")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[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("50e5d817-4ac1-46c0-8e20-260fb6ad16af")]
-[assembly: NeutralResourcesLanguage("en-US")]
-
-// View subclasses
-
-[assembly: ExportRenderer(typeof(BoxView), typeof(BoxViewRenderer))]
-[assembly: ExportRenderer(typeof(Entry), typeof(EntryRenderer))]
-[assembly: ExportRenderer(typeof(Editor), typeof(EditorRenderer))]
-[assembly: ExportRenderer(typeof(Label), typeof(LabelRenderer))]
-[assembly: ExportRenderer(typeof(Image), typeof(ImageRenderer))]
-[assembly: ExportRenderer(typeof(Button), typeof(ButtonRenderer))]
-[assembly: ExportRenderer(typeof(Slider), typeof(SliderRenderer))]
-[assembly: ExportRenderer(typeof(WebView), typeof(WebViewRenderer))]
-[assembly: ExportRenderer(typeof(SearchBar), typeof(SearchBarRenderer))]
-[assembly: ExportRenderer(typeof(Switch), typeof(SwitchRenderer))]
-[assembly: ExportRenderer(typeof(DatePicker), typeof(DatePickerRenderer))]
-[assembly: ExportRenderer(typeof(TimePicker), typeof(TimePickerRenderer))]
-[assembly: ExportRenderer(typeof(Picker), typeof(PickerRenderer))]
-[assembly: ExportRenderer(typeof(Stepper), typeof(StepperRenderer))]
-[assembly: ExportRenderer(typeof(ProgressBar), typeof(ProgressBarRenderer))]
-[assembly: ExportRenderer(typeof(ScrollView), typeof(ScrollViewRenderer))]
-[assembly: ExportRenderer(typeof(ActivityIndicator), typeof(ActivityIndicatorRenderer))]
-[assembly: ExportRenderer(typeof(Frame), typeof(FrameRenderer))]
-[assembly: ExportRenderer(typeof(NavigationMenu), typeof(NavigationMenuRenderer))]
-[assembly: ExportRenderer(typeof(ListView), typeof(ListViewRenderer))]
-[assembly: ExportRenderer(typeof(TableView), typeof(TableViewRenderer))]
-[assembly: ExportRenderer(typeof(NativeViewWrapper), typeof(NativeViewWrapperRenderer))]
-
-// Form and subclasses
-
-[assembly: ExportRenderer(typeof(TabbedPage), typeof(TabbedPageRenderer))]
-[assembly: ExportRenderer(typeof(NavigationPage), typeof(NavigationPageRenderer))]
-[assembly: ExportRenderer(typeof(CarouselPage), typeof(CarouselPageRenderer))]
-[assembly: ExportRenderer(typeof(Page), typeof(PageRenderer))]
-[assembly: ExportRenderer(typeof(MasterDetailPage), typeof(MasterDetailRenderer))]
-
-//ImageSources
-
-[assembly: ExportImageSourceHandler(typeof(FileImageSource), typeof(FileImageSourceHandler))]
-[assembly: ExportImageSourceHandler(typeof(StreamImageSource), typeof(StreamImagesourceHandler))]
-[assembly: ExportImageSourceHandler(typeof(UriImageSource), typeof(ImageLoaderSourceHandler))]
-
-// Cells
-
-[assembly: ExportCell(typeof(Cell), typeof(TextCellRenderer))]
-[assembly: ExportCell(typeof(ImageCell), typeof(ImageCellRenderer))]
-[assembly: ExportCell(typeof(EntryCell), typeof(EntryCellRenderer))]
-[assembly: ExportCell(typeof(SwitchCell), typeof(SwitchCellRenderer))]
-[assembly: ExportCell(typeof(ViewCell), typeof(ViewCellRenderer))]
-[assembly: Dependency(typeof(Deserializer))]
-[assembly: Dependency(typeof(ResourcesProvider))]
-[assembly: InternalsVisibleTo("Xamarin.Forms.Core.WP8.UnitTests")]
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public static class RendererFactory
- {
- [Obsolete("GetRenderer is obsolete as of version 2.0.1. Please use Platform.CreateRenderer instead.")]
- public static IVisualElementRenderer GetRenderer(VisualElement view)
- {
- return Platform.CreateRenderer(view);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Windows.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- internal class ResourcesProvider : ISystemResourcesProvider
- {
- ResourceDictionary _dictionary;
-
- public IResourceDictionary GetSystemResources()
- {
- _dictionary = new ResourceDictionary();
-
- UpdateStyles();
-
- return _dictionary;
- }
-
- Style GetListItemDetailTextStyle()
- {
- var result = new Style(typeof(Label));
-
- result.Setters.Add(new Setter { Property = Label.FontSizeProperty, Value = 32 });
-
- return result;
- }
-
- Style GetListItemTextStyle()
- {
- var result = new Style(typeof(Label));
-
- result.Setters.Add(new Setter { Property = Label.FontSizeProperty, Value = 48 });
-
- return result;
- }
-
- Style GetStyle(System.Windows.Style style, TextBlock hackbox)
- {
- hackbox.Style = style;
-
- var result = new Style(typeof(Label));
- result.Setters.Add(new Setter { Property = Label.FontFamilyProperty, Value = hackbox.FontFamily });
-
- result.Setters.Add(new Setter { Property = Label.FontSizeProperty, Value = hackbox.FontSize });
-
- return result;
- }
-
- void UpdateStyles()
- {
- var textBlock = new TextBlock();
- _dictionary[Device.Styles.TitleStyleKey] = GetStyle((System.Windows.Style)System.Windows.Application.Current.Resources["PhoneTextTitle1Style"], textBlock);
- _dictionary[Device.Styles.SubtitleStyleKey] = GetStyle((System.Windows.Style)System.Windows.Application.Current.Resources["PhoneTextTitle2Style"], textBlock);
- _dictionary[Device.Styles.BodyStyleKey] = GetStyle((System.Windows.Style)System.Windows.Application.Current.Resources["PhoneTextNormalStyle"], textBlock);
- _dictionary[Device.Styles.CaptionStyleKey] = GetStyle((System.Windows.Style)System.Windows.Application.Current.Resources["PhoneTextSmallStyle"], textBlock);
- _dictionary[Device.Styles.ListItemTextStyleKey] = GetListItemTextStyle();
- _dictionary[Device.Styles.ListItemDetailTextStyleKey] = GetListItemDetailTextStyle();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ScrollViewRenderer : ViewRenderer<ScrollView, ScrollViewer>
- {
- Animatable _animatable;
-
- public ScrollViewRenderer()
- {
- AutoPackage = false;
- }
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- SizeRequest result = base.GetDesiredSize(widthConstraint, heightConstraint);
- result.Minimum = new Size(40, 40);
- return result;
- }
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- if (Element == null)
- return finalSize;
-
- Element.IsInNativeLayout = true;
-
- if (Control != null)
- {
- Control.Measure(finalSize);
- Control.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
- }
-
- Element.IsInNativeLayout = false;
-
- return finalSize;
- }
-
- protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
- {
- if (Element == null)
- return new System.Windows.Size(0, 0);
-
- double width = Math.Max(0, Element.Width);
- double height = Math.Max(0, Element.Height);
- return new System.Windows.Size(width, height);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<ScrollView> e)
- {
- base.OnElementChanged(e);
-
- if (e.OldElement != null)
- e.OldElement.ScrollToRequested -= OnScrollToRequested;
-
- if (e.NewElement != null)
- {
- if (Control == null)
- {
- SetNativeControl(new ScrollViewer { ManipulationMode = ManipulationMode.Control });
- Control.LayoutUpdated += (sender, args) => { UpdateScrollPosition(); };
- }
- e.NewElement.ScrollToRequested += OnScrollToRequested;
- }
-
- SizeChanged += (sender, args) =>
- {
- Control.Width = ActualWidth;
- Control.Height = ActualHeight;
- };
-
- UpdateOrientation();
-
- LoadContent();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == "Content")
- LoadContent();
- else if (e.PropertyName == Layout.PaddingProperty.PropertyName)
- UpdateMargins();
- else if (e.PropertyName == ScrollView.OrientationProperty.PropertyName)
- UpdateOrientation();
- }
-
- static double GetDistance(double start, double position, double v)
- {
- return start + (position - start) * v;
- }
-
- void LoadContent()
- {
- var lastContent = Control.Content as FrameworkElement;
- if (lastContent != null)
- lastContent.Margin = new System.Windows.Thickness(); //undo any damage we may have done to this renderer
-
- View view = Element.Content;
-
- if (view != null)
- Platform.SetRenderer(view, Platform.CreateRenderer(view));
-
- Control.Content = view != null ? Platform.GetRenderer(view) : null;
-
- UpdateMargins();
- }
-
- void OnScrollToRequested(object sender, ScrollToRequestedEventArgs e)
- {
- if (_animatable == null && e.ShouldAnimate)
- _animatable = new Animatable();
-
- ScrollToPosition position = e.Position;
- double x = e.ScrollX;
- double y = e.ScrollY;
-
- if (e.Mode == ScrollToMode.Element)
- {
- Point itemPosition = Element.GetScrollPositionForElement(e.Element as VisualElement, e.Position);
- x = itemPosition.X;
- y = itemPosition.Y;
- }
-
- if (Control.VerticalOffset == y && Control.HorizontalOffset == x)
- return;
-
- if (e.ShouldAnimate)
- {
- var animation = new Animation(v => { UpdateScrollOffset(GetDistance(Control.ViewportWidth, x, v), GetDistance(Control.ViewportHeight, y, v)); });
-
- animation.Commit(_animatable, "ScrollTo", length: 500, easing: Easing.CubicInOut, finished: (v, d) =>
- {
- UpdateScrollOffset(x, y);
- Element.SendScrollFinished();
- });
- }
- else
- {
- UpdateScrollOffset(x, y);
- Element.SendScrollFinished();
- }
- }
-
- void UpdateMargins()
- {
- var element = Control.Content as FrameworkElement;
- if (element == null)
- return;
-
- if (Element.Orientation == ScrollOrientation.Horizontal)
- {
- // need to add left/right margins
- element.Margin = new System.Windows.Thickness(Element.Padding.Left, 0, Element.Padding.Right, 0);
- }
- else
- {
- // need to add top/bottom margins
- element.Margin = new System.Windows.Thickness(0, Element.Padding.Top, 0, Element.Padding.Bottom);
- }
- }
-
- void UpdateOrientation()
- {
- if (Element.Orientation == ScrollOrientation.Horizontal)
- Control.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
- else
- Control.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
- }
-
- void UpdateScrollOffset(double x, double y)
- {
- if (Element.Orientation == ScrollOrientation.Horizontal)
- Control.ScrollToHorizontalOffset(x);
- else
- Control.ScrollToVerticalOffset(y);
- }
-
- void UpdateScrollPosition()
- {
- if (Element != null)
- Element.SetScrolledPosition(Control.HorizontalOffset, Control.VerticalOffset);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows.Input;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class SearchBarRenderer : ViewRenderer<SearchBar, FormsPhoneTextBox>
- {
- const string DefaultPlaceholder = "Search";
- Brush _defaultPlaceholderColorBrush;
-
- Brush _defaultTextColorBrush;
-
- bool _fontApplied;
-
- protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
- {
- base.OnElementChanged(e);
-
- var scope = new InputScope();
- var name = new InputScopeName();
- name.NameValue = InputScopeNameValue.Search;
- scope.Names.Add(name);
-
- var phoneTextBox = new FormsPhoneTextBox { InputScope = scope };
-
- phoneTextBox.KeyUp += PhoneTextBoxOnKeyUp;
-
- phoneTextBox.TextChanged += PhoneTextBoxOnTextChanged;
-
- SetNativeControl(phoneTextBox);
-
- UpdateText();
- UpdatePlaceholder();
- UpdateAlignment();
- UpdateFont();
- UpdatePlaceholderColor();
- UpdateTextColor();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == SearchBar.TextProperty.PropertyName)
- UpdateText();
- else if (e.PropertyName == SearchBar.PlaceholderProperty.PropertyName)
- UpdatePlaceholder();
- else if (e.PropertyName == SearchBar.FontAttributesProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.FontFamilyProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.FontSizeProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.HorizontalTextAlignmentProperty.PropertyName)
- UpdateAlignment();
- else if (e.PropertyName == SearchBar.PlaceholderColorProperty.PropertyName)
- UpdatePlaceholderColor();
- else if (e.PropertyName == SearchBar.TextColorProperty.PropertyName)
- UpdateTextColor();
- }
-
- protected override void UpdateBackgroundColor()
- {
- Control.Background = Element.BackgroundColor == Color.Default ? (Brush)System.Windows.Application.Current.Resources["PhoneTextBoxBrush"] : Element.BackgroundColor.ToBrush();
- }
-
- void PhoneTextBoxOnKeyUp(object sender, KeyEventArgs keyEventArgs)
- {
- if (keyEventArgs.Key == Key.Enter)
- Element.OnSearchButtonPressed();
- }
-
- void PhoneTextBoxOnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs textChangedEventArgs)
- {
- Element.SetValueFromRenderer(SearchBar.TextProperty, Control.Text);
- }
-
- void UpdateAlignment()
- {
- Control.TextAlignment = Element.HorizontalTextAlignment.ToNativeTextAlignment();
- }
-
- void UpdateFont()
- {
- if (Control == null)
- return;
-
- SearchBar searchbar = Element;
-
- if (searchbar == null)
- return;
-
- bool searchbarIsDefault = searchbar.FontFamily == null && searchbar.FontSize == Device.GetNamedSize(NamedSize.Default, typeof(SearchBar), true) && searchbar.FontAttributes == FontAttributes.None;
-
- if (searchbarIsDefault && !_fontApplied)
- return;
-
- if (searchbarIsDefault)
- {
- Control.ClearValue(System.Windows.Controls.Control.FontStyleProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontSizeProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontFamilyProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontWeightProperty);
- Control.ClearValue(System.Windows.Controls.Control.FontStretchProperty);
- }
- else
- Control.ApplyFont(searchbar);
-
- _fontApplied = true;
- }
-
- void UpdatePlaceholder()
- {
- Control.Hint = Element.Placeholder ?? DefaultPlaceholder;
- }
-
- void UpdatePlaceholderColor()
- {
- BrushHelpers.UpdateColor(Element.PlaceholderColor, ref _defaultPlaceholderColorBrush,
- () => Control.PlaceholderForegroundBrush, brush => Control.PlaceholderForegroundBrush = brush);
- }
-
- void UpdateText()
- {
- Control.Text = Element.Text ?? "";
- }
-
- void UpdateTextColor()
- {
- BrushHelpers.UpdateColor(Element.TextColor, ref _defaultTextColorBrush,
- () => Control.Foreground, brush => Control.Foreground = brush);
-
- // Force the PhoneTextBox control to do some internal bookkeeping
- // so the colors change immediately and remain changed when the control gets focus
- Control.OnApplyTemplate();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<configuration>
- <system.serviceModel>
- <bindings>
- <basicHttpBinding>
- <binding name="BasicHttpBinding_IGeocodeService" maxBufferSize="2147483647"
- maxReceivedMessageSize="2147483647">
- <security mode="None" />
- </binding>
- </basicHttpBinding>
- <customBinding>
- <binding name="CustomBinding_IGeocodeService">
- <binaryMessageEncoding />
- <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
- </binding>
- </customBinding>
- </bindings>
- <client>
- <endpoint address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc"
- binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGeocodeService"
- contract="GeoService.IGeocodeService" name="BasicHttpBinding_IGeocodeService" />
- <endpoint address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc/binaryHttp"
- binding="customBinding" bindingConfiguration="CustomBinding_IGeocodeService"
- contract="GeoService.IGeocodeService" name="CustomBinding_IGeocodeService" />
- </client>
- </system.serviceModel>
-</configuration>
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class SliderRenderer : ViewRenderer<Slider, System.Windows.Controls.Slider>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
- {
- base.OnElementChanged(e);
-
- var wSlider = new System.Windows.Controls.Slider { Minimum = Element.Minimum, Maximum = Element.Maximum, Value = Element.Value };
-
- SetNativeControl(wSlider);
-
- wSlider.ValueChanged += HandleValueChanged;
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- switch (e.PropertyName)
- {
- case "Minimum":
- Control.Minimum = Element.Minimum;
- break;
- case "Maximum":
- Control.Maximum = Element.Maximum;
- break;
- case "Value":
- if (Control.Value != Element.Value)
- Control.Value = Element.Value;
- break;
- }
- }
-
- void HandleValueChanged(object sender, RoutedPropertyChangedEventArgs<double> routedPropertyChangedEventArgs)
- {
- ((IElementController)Element).SetValueFromRenderer(Slider.ValueProperty, Control.Value);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-// SplitOrderedList.cs
-//
-// Copyright (c) 2010 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections.Generic;
-using System.Threading;
-
-namespace Xamarin.Forms
-{
- internal class SplitOrderedList<TKey, T>
- {
- const int MaxLoad = 5;
- const uint BucketSize = 512;
-
- static readonly byte[] ReverseTable =
- {
- 0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4,
- 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210,
- 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110,
- 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69,
- 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179,
- 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31,
- 159, 95, 223, 63, 191, 127, 255
- };
-
- static readonly byte[] LogTable =
- {
- 0xFF, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7
- };
-
- readonly IEqualityComparer<TKey> _comparer;
-
- readonly Node _head;
- readonly Node _tail;
-
- Node[] _buckets = new Node[BucketSize];
- int _count;
- int _size = 2;
-
- SimpleRwLock _slim = new SimpleRwLock();
-
- public SplitOrderedList(IEqualityComparer<TKey> comparer)
- {
- _comparer = comparer;
- _head = new Node().Init(0);
- _tail = new Node().Init(ulong.MaxValue);
- _head.Next = _tail;
- SetBucket(0, _head);
- }
-
- public int Count
- {
- get { return _count; }
- }
-
- public bool CompareExchange(uint key, TKey subKey, T data, Func<T, bool> check)
- {
- Node node;
- uint b = key % (uint)_size;
- Node bucket;
-
- if ((bucket = GetBucket(b)) == null)
- bucket = InitializeBucket(b);
-
- if (!ListFind(ComputeRegularKey(key), subKey, bucket, out node))
- return false;
-
- if (!check(node.Data))
- return false;
-
- node.Data = data;
-
- return true;
- }
-
- public bool Delete(uint key, TKey subKey, out T data)
- {
- uint b = key % (uint)_size;
- Node bucket;
-
- if ((bucket = GetBucket(b)) == null)
- bucket = InitializeBucket(b);
-
- if (!ListDelete(bucket, ComputeRegularKey(key), subKey, out data))
- return false;
-
- Interlocked.Decrement(ref _count);
- return true;
- }
-
- public bool Find(uint key, TKey subKey, out T data)
- {
- Node node;
- uint b = key % (uint)_size;
- data = default(T);
- Node bucket;
-
- if ((bucket = GetBucket(b)) == null)
- bucket = InitializeBucket(b);
-
- if (!ListFind(ComputeRegularKey(key), subKey, bucket, out node))
- return false;
-
- data = node.Data;
-
- return !node.Marked;
- }
-
- public IEnumerator<T> GetEnumerator()
- {
- Node node = _head.Next;
-
- while (node != _tail)
- {
- while (node.Marked || (node.Key & 1) == 0)
- {
- node = node.Next;
- if (node == _tail)
- yield break;
- }
- yield return node.Data;
- node = node.Next;
- }
- }
-
- public bool Insert(uint key, TKey subKey, T data)
- {
- Node current;
- return InsertInternal(key, subKey, data, null, out current);
- }
-
- public T InsertOrGet(uint key, TKey subKey, T data, Func<T> dataCreator)
- {
- Node current;
- InsertInternal(key, subKey, data, dataCreator, out current);
- return current.Data;
- }
-
- public T InsertOrUpdate(uint key, TKey subKey, Func<T> addGetter, Func<T, T> updateGetter)
- {
- Node current;
- bool result = InsertInternal(key, subKey, default(T), addGetter, out current);
-
- if (result)
- return current.Data;
-
- // FIXME: this should have a CAS-like behavior
- return current.Data = updateGetter(current.Data);
- }
-
- public T InsertOrUpdate(uint key, TKey subKey, T addValue, T updateValue)
- {
- Node current;
- if (InsertInternal(key, subKey, addValue, null, out current))
- return current.Data;
-
- // FIXME: this should have a CAS-like behavior
- return current.Data = updateValue;
- }
-
- // When we run out of space for bucket storage, we use a lock-based array resize
- void CheckSegment(uint segment, bool readLockTaken)
- {
- if (segment < _buckets.Length)
- return;
-
- if (readLockTaken)
- _slim.ExitReadLock();
- try
- {
- _slim.EnterWriteLock();
- while (segment >= _buckets.Length)
- Array.Resize(ref _buckets, _buckets.Length * 2);
- }
- finally
- {
- _slim.ExitWriteLock();
- }
- if (readLockTaken)
- _slim.EnterReadLock();
- }
-
- // Reverse integer bits
- static ulong ComputeDummyKey(uint key)
- {
- return (ulong)(((uint)ReverseTable[key & 0xff] << 24) | ((uint)ReverseTable[(key >> 8) & 0xff] << 16) | ((uint)ReverseTable[(key >> 16) & 0xff] << 8) | ReverseTable[(key >> 24) & 0xff]) << 1;
- }
-
- // Reverse integer bits and make sure LSB is set
- static ulong ComputeRegularKey(uint key)
- {
- return ComputeDummyKey(key) | 1;
- }
-
- // Bucket storage is abstracted in a simple two-layer tree to avoid too much memory resize
- Node GetBucket(uint index)
- {
- if (index >= _buckets.Length)
- return null;
- return _buckets[index];
- }
-
- // Turn v's MSB off
- static uint GetParent(uint v)
- {
- uint t, tt;
-
- // Find MSB position in v
- int pos = (tt = v >> 16) > 0 ? (t = tt >> 8) > 0 ? 24 + LogTable[t] : 16 + LogTable[tt] : (t = v >> 8) > 0 ? 8 + LogTable[t] : LogTable[v];
-
- return (uint)(v & ~(1 << pos));
- }
-
- Node InitializeBucket(uint b)
- {
- Node current;
- uint parent = GetParent(b);
- Node bucket;
-
- if ((bucket = GetBucket(parent)) == null)
- bucket = InitializeBucket(parent);
-
- Node dummy = new Node().Init(ComputeDummyKey(b));
- if (!ListInsert(dummy, bucket, out current, null))
- return current;
-
- return SetBucket(b, dummy);
- }
-
- bool InsertInternal(uint key, TKey subKey, T data, Func<T> dataCreator, out Node current)
- {
- Node node = new Node().Init(ComputeRegularKey(key), subKey, data);
-
- uint b = key % (uint)_size;
- Node bucket;
-
- if ((bucket = GetBucket(b)) == null)
- bucket = InitializeBucket(b);
-
- if (!ListInsert(node, bucket, out current, dataCreator))
- return false;
-
- int csize = _size;
- if (Interlocked.Increment(ref _count) / csize > MaxLoad && (csize & 0x40000000) == 0)
- Interlocked.CompareExchange(ref _size, 2 * csize, csize);
-
- current = node;
-
- return true;
- }
-
- bool ListDelete(Node startPoint, ulong key, TKey subKey, out T data)
- {
- Node rightNode = null, rightNodeNext = null, leftNode = null;
- data = default(T);
- Node markedNode = null;
-
- do
- {
- rightNode = ListSearch(key, subKey, ref leftNode, startPoint);
- if (rightNode == _tail || rightNode.Key != key || !_comparer.Equals(subKey, rightNode.SubKey))
- return false;
-
- data = rightNode.Data;
- rightNodeNext = rightNode.Next;
-
- if (!rightNodeNext.Marked)
- {
- if (markedNode == null)
- markedNode = new Node();
- markedNode.Init(rightNodeNext);
-
- if (Interlocked.CompareExchange(ref rightNode.Next, markedNode, rightNodeNext) == rightNodeNext)
- break;
- }
- } while (true);
-
- if (Interlocked.CompareExchange(ref leftNode.Next, rightNodeNext, rightNode) != rightNode)
- ListSearch(rightNode.Key, subKey, ref leftNode, startPoint);
-
- return true;
- }
-
- bool ListFind(ulong key, TKey subKey, Node startPoint, out Node data)
- {
- Node rightNode = null, leftNode = null;
- data = null;
-
- rightNode = ListSearch(key, subKey, ref leftNode, startPoint);
- data = rightNode;
-
- return rightNode != _tail && rightNode.Key == key && _comparer.Equals(subKey, rightNode.SubKey);
- }
-
- bool ListInsert(Node newNode, Node startPoint, out Node current, Func<T> dataCreator)
- {
- ulong key = newNode.Key;
- Node rightNode = null, leftNode = null;
-
- do
- {
- rightNode = current = ListSearch(key, newNode.SubKey, ref leftNode, startPoint);
- if (rightNode != _tail && rightNode.Key == key && _comparer.Equals(newNode.SubKey, rightNode.SubKey))
- return false;
-
- newNode.Next = rightNode;
- if (dataCreator != null)
- newNode.Data = dataCreator();
- if (Interlocked.CompareExchange(ref leftNode.Next, newNode, rightNode) == rightNode)
- return true;
- } while (true);
- }
-
- Node ListSearch(ulong key, TKey subKey, ref Node left, Node h)
- {
- Node leftNodeNext = null, rightNode = null;
-
- do
- {
- Node t = h;
- Node tNext = t.Next;
- do
- {
- if (!tNext.Marked)
- {
- left = t;
- leftNodeNext = tNext;
- }
- t = tNext.Marked ? tNext.Next : tNext;
- if (t == _tail)
- break;
-
- tNext = t.Next;
- } while (tNext.Marked || t.Key < key || (tNext.Key == key && !_comparer.Equals(subKey, t.SubKey)));
-
- rightNode = t;
-
- if (leftNodeNext == rightNode)
- {
- if (rightNode != _tail && rightNode.Next.Marked)
- continue;
- return rightNode;
- }
-
- if (Interlocked.CompareExchange(ref left.Next, rightNode, leftNodeNext) == leftNodeNext)
- {
- if (rightNode != _tail && rightNode.Next.Marked)
- continue;
- return rightNode;
- }
- } while (true);
- }
-
- Node SetBucket(uint index, Node node)
- {
- try
- {
- _slim.EnterReadLock();
- CheckSegment(index, true);
-
- Interlocked.CompareExchange(ref _buckets[index], node, null);
- return _buckets[index];
- }
- finally
- {
- _slim.ExitReadLock();
- }
- }
-
- class Node
- {
- public T Data;
- public ulong Key;
- public bool Marked;
- public Node Next;
- public TKey SubKey;
-
- public Node Init(ulong key, TKey subKey, T data)
- {
- Key = key;
- SubKey = subKey;
- Data = data;
-
- Marked = false;
- Next = null;
-
- return this;
- }
-
- // Used to create dummy node
- public Node Init(ulong key)
- {
- Key = key;
- Data = default(T);
-
- Next = null;
- Marked = false;
- SubKey = default(TKey);
-
- return this;
- }
-
- // Used to create marked node
- public Node Init(Node wrapped)
- {
- Marked = true;
- Next = wrapped;
-
- Key = 0;
- Data = default(T);
- SubKey = default(TKey);
-
- return this;
- }
- }
-
- struct SimpleRwLock
- {
- const int RwWait = 1;
- const int RwWrite = 2;
- const int RwRead = 4;
-
- int _rwlock;
-
- public void EnterReadLock()
- {
- var sw = new SpinWait();
- do
- {
- while ((_rwlock & (RwWrite | RwWait)) > 0)
- sw.SpinOnce();
-
- if ((Interlocked.Add(ref _rwlock, RwRead) & (RwWait | RwWait)) == 0)
- return;
-
- Interlocked.Add(ref _rwlock, -RwRead);
- } while (true);
- }
-
- public void ExitReadLock()
- {
- Interlocked.Add(ref _rwlock, -RwRead);
- }
-
- public void EnterWriteLock()
- {
- var sw = new SpinWait();
- do
- {
- int state = _rwlock;
- if (state < RwWrite)
- {
- if (Interlocked.CompareExchange(ref _rwlock, RwWrite, state) == state)
- return;
- state = _rwlock;
- }
- // We register our interest in taking the Write lock (if upgradeable it's already done)
- while ((state & RwWait) == 0 && Interlocked.CompareExchange(ref _rwlock, state | RwWait, state) != state)
- state = _rwlock;
- // Before falling to sleep
- while (_rwlock > RwWait)
- sw.SpinOnce();
- } while (true);
- }
-
- public void ExitWriteLock()
- {
- Interlocked.Add(ref _rwlock, -RwWrite);
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using WButton = System.Windows.Controls.Button;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class StepperRenderer : ViewRenderer<Stepper, Border>
- {
- readonly StackPanel _panel = new StackPanel();
- WButton _downButton;
- WButton _upButton;
-
- IElementController ElementController => Element as IElementController;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e)
- {
- base.OnElementChanged(e);
-
- var border = new Border();
- border.Child = _panel;
- _panel.HorizontalAlignment = HorizontalAlignment.Right;
- _panel.Orientation = Orientation.Horizontal;
-
- _upButton = new WButton { Content = "+", Width = 100 };
- _downButton = new WButton { Content = "-", Width = 100 };
-
- _panel.Children.Add(_downButton);
- _panel.Children.Add(_upButton);
-
- SetNativeControl(border);
-
- _upButton.Click += UpButtonOnClick;
- _downButton.Click += DownButtonOnClick;
-
- UpdateButtons();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- switch (e.PropertyName)
- {
- case "Minimum":
- case "Maximum":
- case "Value":
- UpdateButtons();
- break;
- }
- }
-
- void DownButtonOnClick(object sender, RoutedEventArgs routedEventArgs)
- {
- ElementController.SetValueFromRenderer(Stepper.ValueProperty, Math.Max(Element.Minimum, Element.Value - Element.Increment));
- }
-
- void UpButtonOnClick(object sender, RoutedEventArgs routedEventArgs)
- {
- ElementController.SetValueFromRenderer(Stepper.ValueProperty, Math.Min(Element.Maximum, Element.Value + Element.Increment));
- }
-
- void UpdateButtons()
- {
- _upButton.IsEnabled = Element.Value < Element.Maximum;
- _downButton.IsEnabled = Element.Value > Element.Minimum;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using Microsoft.Phone.Controls.Primitives;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class SwitchRenderer : ViewRenderer<Switch, Border>
- {
- readonly ToggleSwitchButton _toggleSwitch = new ToggleSwitchButton();
-
- IElementController ElementController => Element as IElementController;
-
- protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
- {
- base.OnElementChanged(e);
-
- var container = new Border { Child = _toggleSwitch };
- _toggleSwitch.IsChecked = Element.IsToggled;
- _toggleSwitch.Checked += (sender, args) => ElementController.SetValueFromRenderer(Switch.IsToggledProperty, true);
- _toggleSwitch.Unchecked += (sender, args) => ElementController.SetValueFromRenderer(Switch.IsToggledProperty, false);
- _toggleSwitch.HorizontalAlignment = HorizontalAlignment.Right;
-
- SetNativeControl(container);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Switch.IsToggledProperty.PropertyName)
- {
- if (_toggleSwitch.IsChecked != Element.IsToggled)
- _toggleSwitch.IsChecked = Element.IsToggled;
- }
- else if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
- UpdateSwitchIsEnabled();
- }
-
- protected override void UpdateNativeWidget()
- {
- base.UpdateNativeWidget();
-
- UpdateSwitchIsEnabled();
- }
-
- void UpdateSwitchIsEnabled()
- {
- _toggleSwitch.IsEnabled = Element.IsEnabled;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class TabbedPagePresenter : System.Windows.Controls.ContentPresenter
- {
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
-
- DependencyObject parent = VisualTreeHelper.GetParent(this);
- while (parent != null && !(parent is PivotItem))
- parent = VisualTreeHelper.GetParent(parent);
-
- var pivotItem = parent as PivotItem;
- if (pivotItem == null)
- throw new Exception("No parent PivotItem found for tab");
-
- pivotItem.SizeChanged += (s, e) =>
- {
- if (pivotItem.ActualWidth > 0 && pivotItem.ActualHeight > 0)
- {
- var tab = (Page)DataContext;
- ((IPageController)tab.RealParent).ContainerArea = new Rectangle(0, 0, pivotItem.ActualWidth, pivotItem.ActualHeight);
- }
- };
- }
- }
-
- public class TabbedPageRenderer : Pivot, IVisualElementRenderer
- {
- TabbedPage _page;
- BackgroundTracker<Control> _tracker;
-
- public TabbedPageRenderer()
- {
- SetBinding(TitleProperty, new System.Windows.Data.Binding("Title"));
- SetBinding(ItemsSourceProperty, new System.Windows.Data.Binding("Children"));
- HeaderTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["TabbedPageHeader"];
- ItemTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["TabbedPage"];
-
- SelectionChanged += OnSelectionChanged;
- }
-
- public UIElement ContainerElement
- {
- get { return this; }
- }
-
- public VisualElement Element
- {
- get { return _page; }
- }
-
- public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- return new SizeRequest(new Size(widthConstraint, heightConstraint));
- }
-
- public void SetElement(VisualElement element)
- {
- TabbedPage oldElement = _page;
- _page = (TabbedPage)element;
- _tracker = new BackgroundTracker<Control>(BackgroundProperty) { Model = _page, Element = this };
-
- DataContext = element;
-
- _page.PropertyChanged += OnPropertyChanged;
-
- Loaded += (sender, args) => ((IPageController)_page).SendAppearing();
- Unloaded += (sender, args) => ((IPageController)_page).SendDisappearing();
-
- OnElementChanged(new VisualElementChangedEventArgs(_page, element));
- }
-
- protected virtual void OnElementChanged(VisualElementChangedEventArgs e)
- {
- EventHandler<VisualElementChangedEventArgs> changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == "CurrentPage")
- {
- Page current = _page.CurrentPage;
- if (current != null)
- SelectedItem = current;
- }
- }
-
- void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- _page.CurrentPage = (Page)SelectedItem;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<Grid x:Class="Xamarin.Forms.Platform.WinPhone.TableView"
- 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"
- >
-
- <Grid.Resources>
- <ResourceDictionary>
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source="WPResources.xaml" />
- </ResourceDictionary.MergedDictionaries>
- </ResourceDictionary>
- </Grid.Resources>
-
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition />
- </Grid.RowDefinitions>
-
- <TextBlock Grid.Row="0" Text="{Binding Title,Converter={StaticResource UpperConverter}}" Style="{StaticResource PhoneTextSmallTitleStyle}" />
- <ListBox Grid.Row="1" ItemsSource="{Binding}" ItemTemplate="{StaticResource TableGroup}">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem">
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- </Style>
- </ListBox.ItemContainerStyle>
- </ListBox>
-</Grid>
-
+++ /dev/null
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public partial class TableView : System.Windows.Controls.Grid
- {
- public TableView()
- {
- InitializeComponent();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Media;
-using Microsoft.Phone.Shell;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class TableViewRenderer : ViewRenderer<Xamarin.Forms.TableView, TableView>
- {
- TableView _view;
- ITableViewController Controller => Element;
-
- public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- SizeRequest result = base.GetDesiredSize(widthConstraint, heightConstraint);
- result.Minimum = new Size(40, 40);
- return result;
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.TableView> e)
- {
- base.OnElementChanged(e);
-
- Controller.ModelChanged += OnModelChanged;
-
- _view = new TableView { DataContext = Element.Root };
- _view.Tap += OnTapTable;
- _view.Hold += OnLongPressTable;
- SetNativeControl(_view);
- }
-
- bool FindIndices(GestureEventArgs e, out int sectionIndex, out int cellIndex)
- {
- sectionIndex = 0;
- cellIndex = 0;
-
- TableSection section = null;
- Cell cell = null;
-
- System.Windows.Point pos = e.GetPosition(System.Windows.Application.Current.RootVisual);
- if (Device.Info.CurrentOrientation.IsLandscape())
- {
- double x = pos.Y;
- double y = System.Windows.Application.Current.RootVisual.RenderSize.Width - pos.X + (SystemTray.IsVisible ? 72 : 0);
- pos = new System.Windows.Point(x, y);
- }
- IEnumerable<UIElement> elements = VisualTreeHelper.FindElementsInHostCoordinates(pos, System.Windows.Application.Current.RootVisual);
- foreach (FrameworkElement element in elements.OfType<FrameworkElement>())
- {
- if (cell == null)
- cell = element.DataContext as Cell;
- else if (section == null)
- section = element.DataContext as TableSection;
- else
- break;
- }
-
- if (cell == null || section == null)
- return false;
-
- sectionIndex = Element.Root.IndexOf(section);
- cellIndex = section.IndexOf(cell);
- return true;
- }
-
- void OnLongPressTable(object sender, GestureEventArgs e)
- {
- int sectionIndex, cellIndex;
- if (!FindIndices(e, out sectionIndex, out cellIndex))
- return;
-
- Controller.Model.RowLongPressed(sectionIndex, cellIndex);
- }
-
- void OnModelChanged(object sender, EventArgs eventArgs)
- {
- _view.DataContext = Element.Root;
- }
-
- void OnTapTable(object sender, GestureEventArgs e)
- {
- int sectionIndex, cellIndex;
- if (!FindIndices(e, out sectionIndex, out cellIndex))
- return;
-
- Controller.Model.RowSelected(sectionIndex, cellIndex);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using Windows.Foundation;
-
-namespace Xamarin.Forms
-{
- internal static class TaskExtensions
- {
- public static void WatchForError(this IAsyncAction self)
- {
- self.AsTask().WatchForError();
- }
-
- public static void WatchForError<T>(this IAsyncOperation<T> self)
- {
- self.AsTask().WatchForError();
- }
-
- public static void WatchForError(this Task self)
- {
- SynchronizationContext context = SynchronizationContext.Current;
- if (context == null)
- return;
-
- self.ContinueWith(t => {
- Exception exception = t.Exception.InnerExceptions.Count > 1 ? t.Exception : t.Exception.InnerException;
-
- context.Post(e => { throw (Exception)e; }, exception);
- }, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Windows;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public sealed class TextAlignmentToHorizontalAlignmentConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var alignment = (System.Windows.TextAlignment)value;
-
- switch (alignment)
- {
- case System.Windows.TextAlignment.Center:
- return HorizontalAlignment.Center;
- case System.Windows.TextAlignment.Left:
- return HorizontalAlignment.Left;
- case System.Windows.TextAlignment.Right:
- return HorizontalAlignment.Right;
- default:
- return HorizontalAlignment.Left;
- }
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var alignment = (HorizontalAlignment)value;
-
- switch (alignment)
- {
- case HorizontalAlignment.Left:
- return System.Windows.TextAlignment.Left;
- case HorizontalAlignment.Center:
- return System.Windows.TextAlignment.Center;
- case HorizontalAlignment.Right:
- return System.Windows.TextAlignment.Right;
- default:
- return System.Windows.TextAlignment.Left;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows.Input;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class TextCellRenderer : ICellRenderer
- {
- public virtual System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- if (cell.RealParent is ListView)
- {
- if (cell.GetIsGroupHeader<ItemsView<Cell>, Cell>())
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewHeaderTextCell"];
-
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewTextCell"];
- }
-
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["TextCell"];
- }
- }
-
- public class EntryCellRendererCompleted : ICommand
- {
- public bool CanExecute(object parameter)
- {
- return true;
- }
-
- public event EventHandler CanExecuteChanged;
-
- public void Execute(object parameter)
- {
- var entryCell = (IEntryCellController)parameter;
- entryCell.SendCompleted();
- }
-
- protected virtual void OnCanExecuteChanged()
- {
- CanExecuteChanged?.Invoke(this, EventArgs.Empty);
- }
- }
-
- public class EntryCellPhoneTextBox : PhoneTextBox
- {
- public event EventHandler KeyboardReturnPressed;
-
- protected override void OnKeyUp(KeyEventArgs e)
- {
- if (e.Key == Key.Enter)
- {
- EventHandler handler = KeyboardReturnPressed;
- if (handler != null)
- handler(this, EventArgs.Empty);
- }
- base.OnKeyUp(e);
- }
- }
-
- public class EntryCellRenderer : ICellRenderer
- {
- public virtual System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["EntryCell"];
- }
- }
-
- public class ViewCellRenderer : ICellRenderer
- {
- public virtual System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ViewCell"];
- }
- }
-
- public class SwitchCellRenderer : ICellRenderer
- {
- public virtual System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["SwitchCell"];
- }
- }
-
- public class ImageCellRenderer : ICellRenderer
- {
- public virtual System.Windows.DataTemplate GetTemplate(Cell cell)
- {
- if (cell.RealParent is ListView)
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListImageCell"];
- return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ImageCell"];
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Reflection;
-using System.Windows.Media;
-using Microsoft.Phone.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class TimePickerRenderer : ViewRenderer<TimePicker, Microsoft.Phone.Controls.TimePicker>
- {
- Brush _defaultBrush;
-
- protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
- {
- base.OnElementChanged(e);
-
- var timePicker = new Microsoft.Phone.Controls.TimePicker { Value = DateTime.Today.Add(Element.Time) };
-
- timePicker.Loaded += (sender, args) =>
- {
- // The defaults from the control template won't be available
- // right away; we have to wait until after the template has been applied
- _defaultBrush = timePicker.Foreground;
- UpdateTextColor();
- };
-
- timePicker.ValueChanged += TimePickerOnValueChanged;
-
- SetNativeControl(timePicker);
- UpdateFormatString();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == TimePicker.TimeProperty.PropertyName)
- Control.Value = DateTime.Today.Add(Element.Time);
- else if (e.PropertyName == TimePicker.FormatProperty.PropertyName)
- UpdateFormatString();
- else if (e.PropertyName == TimePicker.TextColorProperty.PropertyName)
- UpdateTextColor();
- }
-
- internal override void OnModelFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
- {
- Microsoft.Phone.Controls.TimePicker control = Control;
- if (control == null)
- return;
-
- if (args.Focus)
- {
- typeof(DateTimePickerBase).InvokeMember("OpenPickerPage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, Type.DefaultBinder, control, null);
- args.Result = true;
- }
- else
- {
- UnfocusControl(control);
- args.Result = true;
- }
- }
-
- void TimePickerOnValueChanged(object sender, DateTimeValueChangedEventArgs dateTimeValueChangedEventArgs)
- {
- if (Control.Value != null)
- ((IElementController)Element).SetValueFromRenderer(TimePicker.TimeProperty, Control.Value.Value - DateTime.Today);
- }
-
- void UpdateFormatString()
- {
- Control.ValueStringFormat = "{0:" + Element.Format + "}";
- }
-
- void UpdateTextColor()
- {
- Color color = Element.TextColor;
- Control.Foreground = color.IsDefault ? (_defaultBrush ?? color.ToBrush()) : color.ToBrush();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public static class ViewExtensions
- {
- [Obsolete("GetRenderer is obsolete as of version 2.0.1. Please use Platform.GetRenderer instead.")]
- public static IVisualElementRenderer GetRenderer(this VisualElement self)
- {
- return Platform.GetRenderer(self);
- }
-
- [Obsolete("SetRenderer is obsolete as of version 2.0.1. Please use Platform.SetRenderer instead.")]
- public static void SetRenderer(this VisualElement self, IVisualElementRenderer renderer)
- {
- Platform.SetRenderer(self, renderer);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Media;
-using WSize = System.Windows.Size;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ViewRenderer<TElement, TNativeElement> : VisualElementRenderer<TElement, TNativeElement> where TElement : View where TNativeElement : FrameworkElement
- {
- }
-
- public class ViewRenderer : ViewRenderer<View, FrameworkElement>
- {
- protected override void OnElementChanged(ElementChangedEventArgs<View> e)
- {
- base.OnElementChanged(e);
- SizeChanged += (sender, args) => UpdateClipToBounds();
-
- UpdateBackgroundColor();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == Layout.IsClippedToBoundsProperty.PropertyName)
- UpdateClipToBounds();
- }
-
- protected override void UpdateNativeWidget()
- {
- base.UpdateNativeWidget();
- UpdateClipToBounds();
- }
-
- void UpdateClipToBounds()
- {
- var layout = Element as Layout;
- if (layout != null)
- {
- Clip = null;
- if (layout.IsClippedToBounds)
- Clip = new RectangleGeometry { Rect = new Rect(0, 0, ActualWidth, ActualHeight) };
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Globalization;
-using System.Windows;
-using System.Windows.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class ViewToRendererConverter : System.Windows.Data.IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var view = value as View;
- if (view == null)
- return null;
-
- return new WrapperControl(view);
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
-
- class WrapperControl : ContentControl
- {
- readonly View _view;
-
- public WrapperControl(View view)
- {
- _view = view;
- _view.MeasureInvalidated += (sender, args) => InvalidateMeasure();
-
- IVisualElementRenderer visualElementRenderer = Platform.CreateRenderer(view);
- Platform.SetRenderer(view, visualElementRenderer);
- Content = visualElementRenderer.ContainerElement;
-
- // make sure we re-measure once the template is applied
- var frameworkElement = visualElementRenderer.ContainerElement as FrameworkElement;
- if (frameworkElement != null)
- {
- frameworkElement.Loaded += (sender, args) =>
- {
- (_view as Layout)?.ForceLayout();
- ((IVisualElementController)_view).InvalidateMeasure(InvalidationTrigger.MeasureChanged);
- InvalidateMeasure();
- };
- }
- }
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- _view.IsInNativeLayout = true;
- Layout.LayoutChildIntoBoundingRegion(_view, new Rectangle(0, 0, finalSize.Width, finalSize.Height));
- _view.IsInNativeLayout = false;
-
- var content = Content as FrameworkElement;
- content?.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
- return finalSize;
- }
-
- protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
- {
- var content = Content as FrameworkElement;
- Size request = _view.Measure(availableSize.Width, availableSize.Height, MeasureFlags.IncludeMargins).Request;
-
- System.Windows.Size result;
- if (_view.HorizontalOptions.Alignment == LayoutAlignment.Fill && !double.IsInfinity(availableSize.Width) && availableSize.Width != 0)
- {
- result = new System.Windows.Size(availableSize.Width, request.Height);
- }
- else
- {
- result = new System.Windows.Size(request.Width, request.Height);
- }
-
- _view.Layout(new Rectangle(0, 0, result.Width, result.Height));
-
- content?.Measure(availableSize);
-
- return result;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows;
-using System.Windows.Controls;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class VisualElementPackager
- {
- readonly Panel _panel;
- readonly IVisualElementRenderer _renderer;
- bool _loaded;
-
- public VisualElementPackager(IVisualElementRenderer renderer)
- {
- if (renderer == null)
- throw new ArgumentNullException("renderer");
-
- _panel = renderer.ContainerElement as Panel;
- if (_panel == null)
- throw new ArgumentException("Renderer's container element must be a Panel or Panel subclass");
-
- _renderer = renderer;
- }
-
- IElementController ElementController => _renderer.Element as IElementController;
-
- public void Load()
- {
- if (_loaded)
- return;
-
- _loaded = true;
- _renderer.Element.ChildAdded += HandleChildAdded;
- _renderer.Element.ChildRemoved += HandleChildRemoved;
- _renderer.Element.ChildrenReordered += HandleChildrenReordered;
-
- foreach (Element child in ElementController.LogicalChildren)
- HandleChildAdded(_renderer.Element, new ElementEventArgs(child));
- }
-
- void EnsureZIndex()
- {
- for (var index = 0; index < ElementController.LogicalChildren.Count; index++)
- {
- var child = (VisualElement)ElementController.LogicalChildren[index];
- IVisualElementRenderer r = Platform.GetRenderer(child);
- if (r == null)
- continue;
- // Even though this attached property is defined on Canvas, it actually works on all Panels
- // Why? Microsoft.
- Canvas.SetZIndex(r.ContainerElement, index + 1);
- }
- }
-
- void HandleChildAdded(object sender, ElementEventArgs e)
- {
- var view = e.Element as VisualElement;
-
- if (view == null)
- return;
-
- IVisualElementRenderer renderer;
- Platform.SetRenderer(view, renderer = Platform.CreateRenderer(view));
-
- _panel.Children.Add(renderer.ContainerElement);
-
- EnsureZIndex();
- }
-
- void HandleChildRemoved(object sender, ElementEventArgs e)
- {
- var view = e.Element as VisualElement;
-
- if (view == null)
- return;
-
- var renderer = Platform.GetRenderer(view) as UIElement;
-
- if (renderer != null)
- _panel.Children.Remove(renderer);
-
- EnsureZIndex();
- }
-
- void HandleChildrenReordered(object sender, EventArgs e)
- {
- EnsureZIndex();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class VisualElementRenderer<TElement, TNativeElement> : Panel, IVisualElementRenderer, IEffectControlProvider where TElement : VisualElement where TNativeElement : FrameworkElement
- {
- readonly List<EventHandler<VisualElementChangedEventArgs>> _elementChangedHandlers = new List<EventHandler<VisualElementChangedEventArgs>>();
-
- Brush _initialBrush;
-
- VisualElementTracker _tracker;
-
- IElementController ElementController => Element as IElementController;
-
- public TNativeElement Control { get; private set; }
-
- public TElement Element { get; private set; }
-
- protected bool AutoPackage { get; set; } = true;
-
- protected bool AutoTrack { get; set; } = true;
-
- protected VisualElementTracker Tracker
- {
- get { return _tracker; }
- set
- {
- if (_tracker == value)
- return;
-
- if (_tracker != null)
- {
- _tracker.Dispose();
- _tracker.Updated -= HandleTrackerUpdated;
- }
-
- _tracker = value;
-
- if (_tracker != null)
- _tracker.Updated += HandleTrackerUpdated;
- }
- }
-
- VisualElementPackager Packager { get; set; }
-
- void IEffectControlProvider.RegisterEffect(Effect effect)
- {
- var platformEffect = effect as PlatformEffect;
- if (platformEffect != null)
- OnRegisterEffect(platformEffect);
- }
-
- public UIElement ContainerElement
- {
- get { return this; }
- }
-
- VisualElement IVisualElementRenderer.Element
- {
- get { return Element; }
- }
-
- event EventHandler<VisualElementChangedEventArgs> IVisualElementRenderer.ElementChanged
- {
- add { _elementChangedHandlers.Add(value); }
- remove { _elementChangedHandlers.Remove(value); }
- }
-
- public virtual SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- if (Children.Count == 0)
- return new SizeRequest();
-
- var constraint = new System.Windows.Size(widthConstraint, heightConstraint);
- var child = (FrameworkElement)Children[0];
-
- child.Measure(constraint);
- var result = new Size(Math.Ceiling(child.DesiredSize.Width), Math.Ceiling(child.DesiredSize.Height));
-
- return new SizeRequest(result);
- }
-
- public void SetElement(VisualElement element)
- {
- TElement oldElement = Element;
- Element = (TElement)element;
-
- if (oldElement != null)
- {
- oldElement.PropertyChanged -= OnElementPropertyChanged;
- oldElement.FocusChangeRequested -= OnModelFocusChangeRequested;
- }
-
- Element.PropertyChanged += OnElementPropertyChanged;
- Element.FocusChangeRequested += OnModelFocusChangeRequested;
-
- if (AutoPackage && Packager == null)
- Packager = new VisualElementPackager(this);
-
- if (AutoTrack && Tracker == null)
- {
- Tracker = new VisualElementTracker<TElement, FrameworkElement> { Model = Element, Element = this };
- }
-
- // Disabled until reason for crashes with unhandled exceptions is discovered
- // Without this some layouts may end up with improper sizes, however their children
- // will position correctly
- //Loaded += (sender, args) => {
- if (Packager != null)
- Packager.Load();
- //};
-
- OnElementChanged(new ElementChangedEventArgs<TElement>(oldElement, Element));
-
- var controller = (IElementController)oldElement;
- if (controller != null && controller.EffectControlProvider == this)
- controller.EffectControlProvider = null;
-
- controller = element;
- if (controller != null)
- controller.EffectControlProvider = this;
- }
-
- public event EventHandler<ElementChangedEventArgs<TElement>> ElementChanged;
-
- protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize)
- {
- if (Element == null || finalSize.Width * finalSize.Height == 0)
- return finalSize;
-
- Element.IsInNativeLayout = true;
-
- if (Control != null)
- {
- Control.Measure(finalSize);
- Control.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
- }
-
- for (var i = 0; i < ElementController.LogicalChildren.Count; i++)
- {
- var child = ElementController.LogicalChildren[i] as VisualElement;
- if (child == null)
- continue;
- IVisualElementRenderer renderer = Platform.GetRenderer(child);
- if (renderer == null)
- continue;
- Rectangle bounds = child.Bounds;
-
- renderer.ContainerElement.Arrange(new Rect(bounds.X, bounds.Y, Math.Max(0, bounds.Width), Math.Max(0, bounds.Height)));
- }
-
- Element.IsInNativeLayout = false;
-
- return finalSize;
- }
-
- protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
- {
- if (Element == null || availableSize.Width * availableSize.Height == 0)
- return new System.Windows.Size(0, 0);
-
- Element.IsInNativeLayout = true;
-
- for (var i = 0; i < ElementController.LogicalChildren.Count; i++)
- {
- var child = ElementController.LogicalChildren[i] as VisualElement;
- if (child == null)
- continue;
- IVisualElementRenderer renderer = Platform.GetRenderer(child);
- if (renderer == null)
- continue;
-
- try
- {
- renderer.ContainerElement.Measure(availableSize);
- }
- catch (NullReferenceException)
- {
- if (!IsExpectedTabbedPageMeasurementException(renderer))
- throw;
- }
- }
-
- double width = Math.Max(0, Element.Width);
- double height = Math.Max(0, Element.Height);
- var result = new System.Windows.Size(width, height);
-
- if (Control != null)
- {
- double w = Element.Width;
- double h = Element.Height;
- if (w == -1)
- w = availableSize.Width;
- if (h == -1)
- h = availableSize.Height;
- w = Math.Max(0, w);
- h = Math.Max(0, h);
- Control.Measure(new System.Windows.Size(w, h));
- }
-
- Element.IsInNativeLayout = false;
-
- return result;
- }
-
- protected virtual void OnElementChanged(ElementChangedEventArgs<TElement> e)
- {
- var args = new VisualElementChangedEventArgs(e.OldElement, e.NewElement);
- for (var i = 0; i < _elementChangedHandlers.Count; i++)
- _elementChangedHandlers[i](this, args);
-
- EventHandler<ElementChangedEventArgs<TElement>> changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
- UpdateEnabled();
- else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
- UpdateBackgroundColor();
- }
-
- protected virtual void OnGotFocus(object sender, RoutedEventArgs args)
- {
- ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true);
- }
-
- protected virtual void OnLostFocus(object sender, RoutedEventArgs args)
- {
- ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
- }
-
- protected virtual void OnRegisterEffect(PlatformEffect effect)
- {
- effect.SetContainer(this);
- effect.SetControl(Control);
- }
-
- protected void SetNativeControl(TNativeElement element)
- {
- Control = element;
-
- Children.Add(element);
- Element.IsNativeStateConsistent = false;
- element.Loaded += (sender, args) => Element.IsNativeStateConsistent = true;
-
- element.GotFocus += OnGotFocus;
- element.LostFocus += OnLostFocus;
-
- _tracker.Child = element;
-
- UpdateBackgroundColor();
- }
-
- protected virtual void UpdateBackgroundColor()
- {
- var control = Control as Control;
- if (_initialBrush == null)
- _initialBrush = control == null ? Background : control.Background;
- if (control != null)
- control.Background = Element.BackgroundColor != Color.Default ? Element.BackgroundColor.ToBrush() : _initialBrush;
- else
- Background = Element.BackgroundColor != Color.Default ? Element.BackgroundColor.ToBrush() : _initialBrush;
- }
-
- protected virtual void UpdateNativeWidget()
- {
- UpdateEnabled();
- }
-
- internal virtual void OnModelFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
- {
- var control = Control as Control;
- if (control == null)
- return;
-
- if (args.Focus)
- args.Result = control.Focus();
- else
- {
- UnfocusControl(control);
- args.Result = true;
- }
- }
-
- internal void UnfocusControl(Control control)
- {
- if (control == null || !control.IsEnabled)
- return;
- control.IsEnabled = false;
- control.IsEnabled = true;
- }
-
- void HandleTrackerUpdated(object sender, EventArgs e)
- {
- UpdateNativeWidget();
- }
-
- static bool IsExpectedTabbedPageMeasurementException(IVisualElementRenderer renderer)
- {
- // The TabbedPageRenderer's underlying Pivot control throws a NRE if the tabbed page
- // does not have any toolbar items and it's measured during an animated transition
- // from a page which does have toolbar items
-
- // The NRE happens before TabbedPageRenderer's MeasureOverride is even called,
- // so unfortunately we have to handle it here
-
- var tpr = renderer.ContainerElement as TabbedPageRenderer;
-
- var tp = tpr?.Element as TabbedPage;
-
- return tp?.ToolbarItems.Count == 0;
- }
-
- void UpdateEnabled()
- {
- if (Control is Control)
- (Control as Control).IsEnabled = Element.IsEnabled;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Media;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public abstract class VisualElementTracker : IDisposable
- {
- public abstract FrameworkElement Child { get; set; }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- }
-
- public event EventHandler Updated;
-
- protected void OnUpdated()
- {
- if (Updated != null)
- Updated(this, EventArgs.Empty);
- }
- }
-
- public class VisualElementTracker<TModel, TElement> : VisualElementTracker where TModel : VisualElement where TElement : FrameworkElement
- {
- FrameworkElement _child;
- bool _disposed;
- TElement _element;
-
- bool _invalidateArrangeNeeded;
- bool _isPanning;
- bool _isPinching;
-
- TModel _model;
- bool _touchFrameReportedEventSet;
- int _touchPoints = 1;
-
- public override FrameworkElement Child
- {
- get { return _child; }
- set
- {
- if (_child == value)
- return;
- _child = value;
- UpdateNativeControl();
- }
- }
-
- public TElement Element
- {
- get { return _element; }
- set
- {
- if (_element == value)
- return;
-
- if (_element != null)
- {
- _element.Tap -= ElementOnTap;
- _element.DoubleTap -= ElementOnDoubleTap;
- _element.ManipulationDelta -= OnManipulationDelta;
- _element.ManipulationCompleted -= OnManipulationCompleted;
- }
-
- _element = value;
-
- if (_element != null)
- {
- _element.Tap += ElementOnTap;
- _element.DoubleTap += ElementOnDoubleTap;
- _element.ManipulationDelta += OnManipulationDelta;
- _element.ManipulationCompleted += OnManipulationCompleted;
- }
-
- UpdateNativeControl();
- }
- }
-
- public TModel Model
- {
- get { return _model; }
- set
- {
- if (_model == value)
- return;
-
- if (_model != null)
- {
- _model.BatchCommitted -= HandleRedrawNeeded;
- _model.PropertyChanged -= HandlePropertyChanged;
- }
-
- _model = value;
-
- if (_model != null)
- {
- _model.BatchCommitted += HandleRedrawNeeded;
- _model.PropertyChanged += HandlePropertyChanged;
- }
-
- UpdateNativeControl();
- }
- }
-
- protected override void Dispose(bool disposing)
- {
- if (_disposed)
- return;
-
- _disposed = true;
-
- if (disposing)
- {
- if (_element != null)
- {
- _element.Tap -= ElementOnTap;
- _element.DoubleTap -= ElementOnDoubleTap;
- _element.ManipulationDelta -= OnManipulationDelta;
- _element.ManipulationCompleted -= OnManipulationCompleted;
- }
-
- if (_model != null)
- {
- _model.BatchCommitted -= HandleRedrawNeeded;
- _model.PropertyChanged -= HandlePropertyChanged;
- }
-
- Child = null;
- Model = null;
- Element = null;
- }
-
- base.Dispose(disposing);
- }
-
- protected virtual void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (Model.Batched)
- {
- if (e.PropertyName == VisualElement.XProperty.PropertyName || e.PropertyName == VisualElement.YProperty.PropertyName || e.PropertyName == VisualElement.WidthProperty.PropertyName ||
- e.PropertyName == VisualElement.HeightProperty.PropertyName)
- _invalidateArrangeNeeded = true;
- return;
- }
-
- if (e.PropertyName == VisualElement.XProperty.PropertyName || e.PropertyName == VisualElement.YProperty.PropertyName || e.PropertyName == VisualElement.WidthProperty.PropertyName ||
- e.PropertyName == VisualElement.HeightProperty.PropertyName)
- MaybeInvalidate();
- else if (e.PropertyName == VisualElement.AnchorXProperty.PropertyName || e.PropertyName == VisualElement.AnchorYProperty.PropertyName)
- UpdateScaleAndRotation(Model, Element);
- else if (e.PropertyName == VisualElement.ScaleProperty.PropertyName)
- UpdateScaleAndRotation(Model, Element);
- else if (e.PropertyName == VisualElement.TranslationXProperty.PropertyName || e.PropertyName == VisualElement.TranslationYProperty.PropertyName ||
- e.PropertyName == VisualElement.RotationProperty.PropertyName || e.PropertyName == VisualElement.RotationXProperty.PropertyName || e.PropertyName == VisualElement.RotationYProperty.PropertyName)
- UpdateRotation(Model, Element);
- else if (e.PropertyName == VisualElement.IsVisibleProperty.PropertyName)
- UpdateVisibility(Model, Element);
- else if (e.PropertyName == VisualElement.OpacityProperty.PropertyName)
- UpdateOpacity(Model, Element);
- else if (e.PropertyName == VisualElement.InputTransparentProperty.PropertyName)
- UpdateInputTransparent(Model, Element);
- }
-
- protected virtual void UpdateNativeControl()
- {
- if (Model == null || Element == null)
- return;
-
- UpdateOpacity(_model, _element);
- UpdateScaleAndRotation(_model, _element);
- UpdateInputTransparent(_model, _element);
-
- if (_invalidateArrangeNeeded)
- MaybeInvalidate();
- _invalidateArrangeNeeded = false;
-
- UpdateTouchFrameReportedEvent(_model);
-
- OnUpdated();
- }
-
- void ElementOnDoubleTap(object sender, GestureEventArgs gestureEventArgs)
- {
- var view = Model as View;
- if (view == null)
- return;
-
- foreach (TapGestureRecognizer gestureRecognizer in
- view.GestureRecognizers.OfType<TapGestureRecognizer>().Where(g => g.NumberOfTapsRequired == 2))
- {
- gestureRecognizer.SendTapped(view);
- gestureEventArgs.Handled = true;
- }
- }
-
- void ElementOnTap(object sender, GestureEventArgs gestureEventArgs)
- {
- var view = Model as View;
- if (view == null)
- return;
-
- foreach (TapGestureRecognizer gestureRecognizer in
- view.GestureRecognizers.OfType<TapGestureRecognizer>().Where(g => g.NumberOfTapsRequired == 1))
- {
- gestureRecognizer.SendTapped(view);
- gestureEventArgs.Handled = true;
- }
- }
-
- void HandlePan(ManipulationDeltaEventArgs e, View view)
- {
- foreach (PanGestureRecognizer recognizer in
- view.GestureRecognizers.GetGesturesFor<PanGestureRecognizer>().Where(g => g.TouchPoints == _touchPoints))
- {
- if (!_isPanning)
- ((IPanGestureController)recognizer).SendPanStarted(view, Application.Current.PanGestureId);
-
- double totalX = 0;
- double totalY = 0;
-
- // Translation and CumulativeManipulation will be 0 if we have more than one touch point because it thinks we're pinching,
- // so we'll just go ahead and use the center point of the pinch gesture to figure out how much we're panning.
- if (_touchPoints > 1 && e.PinchManipulation != null)
- {
- totalX = e.PinchManipulation.Current.Center.X - e.PinchManipulation.Original.Center.X;
- totalY = e.PinchManipulation.Current.Center.Y - e.PinchManipulation.Original.Center.Y;
- }
- else
- {
- totalX = e.DeltaManipulation.Translation.X + e.CumulativeManipulation.Translation.X;
- totalY = e.DeltaManipulation.Translation.Y + e.CumulativeManipulation.Translation.Y;
- }
-
- ((IPanGestureController)recognizer).SendPan(view, totalX, totalY, Application.Current.PanGestureId);
- _isPanning = true;
- }
- }
-
- void HandlePinch(ManipulationDeltaEventArgs e, View view)
- {
- if (e.PinchManipulation == null)
- return;
-
- IEnumerable<PinchGestureRecognizer> pinchGestures = view.GestureRecognizers.GetGesturesFor<PinchGestureRecognizer>();
- System.Windows.Point translationPoint = e.ManipulationContainer.TransformToVisual(Element).Transform(e.PinchManipulation.Current.Center);
- var scaleOriginPoint = new Point(translationPoint.X / view.Width, translationPoint.Y / view.Height);
- foreach (var recognizer in pinchGestures)
- {
- if (!_isPinching)
- ((IPinchGestureController)recognizer).SendPinchStarted(view, scaleOriginPoint);
- ((IPinchGestureController)recognizer).SendPinch(view, e.PinchManipulation.DeltaScale, scaleOriginPoint);
- }
- _isPinching = true;
- }
-
- void HandleRedrawNeeded(object sender, EventArgs e)
- {
- UpdateNativeControl();
- }
-
- void MaybeInvalidate()
- {
- if (Model.IsInNativeLayout)
- return;
-
- var parent = (FrameworkElement)Element.Parent;
- parent?.InvalidateMeasure();
- Element.InvalidateMeasure();
- }
-
- void OnManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
- {
- var view = Model as View;
- if (view == null)
- return;
-
- IEnumerable pinchGestures = view.GestureRecognizers.GetGesturesFor<PinchGestureRecognizer>();
- foreach (var recognizer in pinchGestures)
- ((IPinchGestureController)recognizer).SendPinchEnded(view);
- _isPinching = false;
-
- IEnumerable<PanGestureRecognizer> panGestures = view.GestureRecognizers.GetGesturesFor<PanGestureRecognizer>().Where(g => g.TouchPoints == _touchPoints);
- foreach (PanGestureRecognizer recognizer in panGestures)
- ((IPanGestureController)recognizer).SendPanCompleted(view, Application.Current.PanGestureId);
- Application.Current.PanGestureId++;
- _isPanning = false;
- }
-
- void OnManipulationDelta(object sender, ManipulationDeltaEventArgs e)
- {
- var view = Model as View;
- if (view == null)
- return;
-
- HandlePinch(e, view);
-
- HandlePan(e, view);
- }
-
- void Touch_FrameReported(object sender, TouchFrameEventArgs e)
- {
- _touchPoints = e.GetTouchPoints(Child).Count;
- }
-
- static void UpdateInputTransparent(VisualElement view, FrameworkElement frameworkElement)
- {
- frameworkElement.IsHitTestVisible = !view.InputTransparent;
- }
-
- static void UpdateOpacity(VisualElement view, FrameworkElement frameworkElement)
- {
- frameworkElement.Opacity = view.Opacity;
- }
-
- static void UpdateRotation(VisualElement view, FrameworkElement frameworkElement)
- {
- double anchorX = view.AnchorX;
- double anchorY = view.AnchorY;
- double rotationX = view.RotationX;
- double rotationY = view.RotationY;
- double rotation = view.Rotation;
- double translationX = view.TranslationX;
- double translationY = view.TranslationY;
- double scale = view.Scale;
-
- frameworkElement.Projection = new PlaneProjection
- {
- CenterOfRotationX = anchorX,
- CenterOfRotationY = anchorY,
- GlobalOffsetX = scale == 0 ? 0 : translationX / scale,
- GlobalOffsetY = scale == 0 ? 0 : translationY / scale,
- RotationX = -rotationX,
- RotationY = -rotationY,
- RotationZ = -rotation
- };
- }
-
- static void UpdateScaleAndRotation(VisualElement view, FrameworkElement frameworkElement)
- {
- double anchorX = view.AnchorX;
- double anchorY = view.AnchorY;
- double scale = view.Scale;
- frameworkElement.RenderTransformOrigin = new System.Windows.Point(anchorX, anchorY);
- frameworkElement.RenderTransform = new ScaleTransform { ScaleX = scale, ScaleY = scale };
-
- UpdateRotation(view, frameworkElement);
- }
-
- void UpdateTouchFrameReportedEvent(VisualElement model)
- {
- if (_touchFrameReportedEventSet)
- return;
-
- Touch.FrameReported -= Touch_FrameReported;
- _touchFrameReportedEventSet = false;
-
- var view = model as View;
- if (view == null)
- return;
-
- if (!view.GestureRecognizers.GetGesturesFor<PanGestureRecognizer>().Any(g => g.TouchPoints > 1))
- return;
-
- Touch.FrameReported += Touch_FrameReported;
- _touchFrameReportedEventSet = true;
- }
-
- static void UpdateVisibility(VisualElement view, FrameworkElement frameworkElement)
- {
- frameworkElement.Visibility = view.IsVisible ? Visibility.Visible : Visibility.Collapsed;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.IO;
-using System.IO.IsolatedStorage;
-using System.Net;
-using System.Reflection;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Threading;
-using Windows.System;
-using Xamarin.Forms.Internals;
-using Xamarin.Forms.Platform.WinPhone;
-
-namespace Xamarin.Forms
-{
- internal class WP8PlatformServices : IPlatformServices
- {
- static readonly MD5CryptoServiceProvider Checksum = new MD5CryptoServiceProvider();
-
- public void BeginInvokeOnMainThread(Action action)
- {
- Deployment.Current.Dispatcher.BeginInvoke(action);
- }
-
- public Ticker CreateTicker()
- {
- return new WinPhoneTicker();
- }
-
- public Assembly[] GetAssemblies()
- {
- return AppDomain.CurrentDomain.GetAssemblies();
- }
-
- public string GetMD5Hash(string input)
- {
- byte[] bytes = Checksum.ComputeHash(Encoding.UTF8.GetBytes(input));
- var ret = new char[32];
- for (var i = 0; i < 16; i++)
- {
- ret[i * 2] = (char)Hex(bytes[i] >> 4);
- ret[i * 2 + 1] = (char)Hex(bytes[i] & 0xf);
- }
- return new string(ret);
- }
-
- public double GetNamedSize(NamedSize size, Type targetElementType, bool useOldSizes)
- {
- switch (size)
- {
- case NamedSize.Default:
- if (typeof(Label).IsAssignableFrom(targetElementType))
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeNormal"];
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeMedium"];
- case NamedSize.Micro:
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"] - 3;
- case NamedSize.Small:
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeSmall"];
- case NamedSize.Medium:
- if (useOldSizes)
- goto case NamedSize.Default;
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeMedium"];
- case NamedSize.Large:
- return (double)System.Windows.Application.Current.Resources["PhoneFontSizeLarge"];
- default:
- throw new ArgumentOutOfRangeException("size");
- }
- }
-
- public Task<Stream> GetStreamAsync(Uri uri, CancellationToken cancellationToken)
- {
- var tcs = new TaskCompletionSource<Stream>();
-
- try
- {
- HttpWebRequest request = WebRequest.CreateHttp(uri);
- request.AllowReadStreamBuffering = true;
- request.BeginGetResponse(ar =>
- {
- if (cancellationToken.IsCancellationRequested)
- {
- tcs.SetCanceled();
- return;
- }
-
- try
- {
- Stream stream = request.EndGetResponse(ar).GetResponseStream();
- tcs.TrySetResult(stream);
- }
- catch (Exception ex)
- {
- tcs.TrySetException(ex);
- }
- }, null);
- }
- catch (Exception ex)
- {
- tcs.TrySetException(ex);
- }
-
- return tcs.Task;
- }
-
- public IIsolatedStorageFile GetUserStoreForApplication()
- {
- return new _IsolatedStorageFile(IsolatedStorageFile.GetUserStoreForApplication());
- }
-
- public bool IsInvokeRequired
- {
- get { return !Deployment.Current.Dispatcher.CheckAccess(); }
- }
-
- public string RuntimePlatform => Device.WinPhone;
-
- public void OpenUriAction(Uri uri)
- {
- Launcher.LaunchUriAsync(uri).WatchForError();
- }
-
- public void StartTimer(TimeSpan interval, Func<bool> callback)
- {
- var timer = new DispatcherTimer { Interval = interval };
- timer.Start();
- timer.Tick += (sender, args) =>
- {
- bool result = callback();
- if (!result)
- timer.Stop();
- };
- }
-
- static int Hex(int v)
- {
- if (v < 10)
- return '0' + v;
- return 'a' + v - 10;
- }
-
- public void QuitApplication()
- {
- Log.Warning(nameof(WP8PlatformServices), "Platform doesn't implement QuitApp");
- }
-
- public class _IsolatedStorageFile : IIsolatedStorageFile
- {
- readonly IsolatedStorageFile _isolatedStorageFile;
-
- public _IsolatedStorageFile(IsolatedStorageFile isolatedStorageFile)
- {
- _isolatedStorageFile = isolatedStorageFile;
- }
-
- public Task CreateDirectoryAsync(string path)
- {
- _isolatedStorageFile.CreateDirectory(path);
- return Task.FromResult(true);
- }
-
- public Task<bool> GetDirectoryExistsAsync(string path)
- {
- return Task.FromResult(_isolatedStorageFile.DirectoryExists(path));
- }
-
- public Task<bool> GetFileExistsAsync(string path)
- {
- return Task.FromResult(_isolatedStorageFile.FileExists(path));
- }
-
- public Task<DateTimeOffset> GetLastWriteTimeAsync(string path)
- {
- return Task.FromResult(_isolatedStorageFile.GetLastWriteTime(path));
- }
-
- public Task<Stream> OpenFileAsync(string path, Internals.FileMode mode, Internals.FileAccess access)
- {
- Stream stream = _isolatedStorageFile.OpenFile(path, (System.IO.FileMode)mode, (System.IO.FileAccess)access);
- return Task.FromResult(stream);
- }
-
- public Task<Stream> OpenFileAsync(string path, Internals.FileMode mode, Internals.FileAccess access, Internals.FileShare share)
- {
- Stream stream = _isolatedStorageFile.OpenFile(path, (System.IO.FileMode)mode, (System.IO.FileAccess)access, (System.IO.FileShare)share);
- return Task.FromResult(stream);
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" ?>
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
- xmlns:forms="clr-namespace:Xamarin.Forms.Platform.WinPhone"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
-
- <forms:CaseConverter x:Key="UpperConverter" ConvertToUpper="True" />
- <forms:CaseConverter x:Key="LowerConverter" ConvertToUpper="False" />
- <forms:ColorConverter x:Key="ColorConverter" />
- <forms:HeightConverter x:Key="HeightConverter" />
- <forms:HorizontalTextAlignmentConverter x:Key="HorizontalTextAlignmentConverter" />
- <forms:KeyboardConverter x:Key="KeyboardConverter"/>
- <forms:ImageConverter x:Key="ImageConverter" />
- <forms:ViewToRendererConverter x:Key="ViewToRenderer" />
- <forms:PageToRendererConverter x:Key="PageToRenderer" />
- <forms:CollapseWhenEmptyConverter x:Key="CollapseWhenEmpty" />
- <forms:EntryCellRendererCompleted x:Key="EntryCellRendererCompleted" />
-
- <Style x:Key="PhoneTextSmallTitleStyle" BasedOn="{StaticResource PhoneTextNormalStyle}" TargetType="TextBlock">
- <Style.Setters>
- <Setter Property="FontWeight" Value="Bold" />
- </Style.Setters>
- </Style>
-
- <DataTemplate x:Key="CellTemplate">
- <Border Background="Transparent">
- <forms:CellControl Cell="{Binding}" HorizontalContentAlignment="Stretch" />
- </Border>
- </DataTemplate>
-
- <DataTemplate x:Key="TableGroup">
- <StackPanel Margin="0,20,0,0">
- <TextBlock Text="{Binding Title,Converter={StaticResource LowerConverter}}" Style="{StaticResource PhoneTextGroupHeaderStyle}" />
- <ItemsControl ItemsSource="{Binding}" ItemTemplate="{StaticResource CellTemplate}" />
- </StackPanel>
- </DataTemplate>
-
- <DataTemplate x:Key="ViewCell">
- <ContentPresenter Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" Content="{Binding View,Converter={StaticResource ViewToRenderer}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="View">
- <ContentPresenter Content="{Binding Path=.,Converter={StaticResource ViewToRenderer}}" />
- </DataTemplate>
-
- <Style x:Key="HeaderJumpStyle" TargetType="phone:LongListSelector">
- <Setter Property="GridCellSize" Value="113,113" />
- <Setter Property="LayoutMode" Value="Grid" />
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <Border Background="{StaticResource PhoneAccentBrush}" Margin="6">
- <TextBlock Text="{Binding ShortName, Converter={StaticResource LowerConverter}}" Foreground="{StaticResource PhoneForegroundBrush}" FontSize="48" Padding="6" FontFamily="{StaticResource PhoneFontFamilySemiLight}" HorizontalAlignment="Left" VerticalAlignment="Bottom" />
- </Border>
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="ListViewHeader">
- <forms:CellControl Cell="{Binding HeaderContent}" HorizontalContentAlignment="Left" ShowContextActions="False" />
- </DataTemplate>
-
- <DataTemplate x:Key="ListViewHeaderTextCell">
- <Border Background="{StaticResource PhoneAccentBrush}" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" Margin="5" MinWidth="62" MinHeight="62">
- <StackPanel Margin="6">
- <StackPanel.Resources>
- <Style TargetType="TextBlock">
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiLight}" />
- </Style>
- </StackPanel.Resources>
-
- <TextBlock FontSize="48"
- Text="{Binding Text, Converter={StaticResource LowerConverter}}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}" />
-
- <TextBlock FontSize="32"
- Text="{Binding Detail}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneAccentBrush}" />
- </StackPanel>
- </Border>
- </DataTemplate>
-
- <DataTemplate x:Key="TextCell">
- <Button Name="button" Margin="0,10,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" IsEnabled="{Binding IsEnabled}">
- <Button.Template>
- <ControlTemplate>
- <Grid Background="{Binding Background,RelativeSource={RelativeSource TemplatedParent}}">
- <ContentPresenter />
- </Grid>
- </ControlTemplate>
- </Button.Template>
- <Button.Content>
- <StackPanel>
- <TextBlock
- Style="{StaticResource PhoneTextExtraLargeStyle}"
- Text="{Binding Text,Converter={StaticResource LowerConverter}}"
- Foreground="{Binding TextColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- />
-
- <TextBlock
- Style="{StaticResource PhoneTextAccentStyle}"
- Text="{Binding Detail}"
- Foreground="{Binding DetailColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneAccentBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- />
- </StackPanel>
- </Button.Content>
- </Button>
- </DataTemplate>
-
- <DataTemplate x:Key="ImageCell">
- <Button Name="button" Margin="0,10,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" IsEnabled="{Binding IsEnabled}">
- <Button.Template>
- <ControlTemplate>
- <Grid Background="{Binding Background,RelativeSource={RelativeSource TemplatedParent}}">
- <ContentPresenter />
- </Grid>
- </ControlTemplate>
- </Button.Template>
- <Button.Content>
- <Grid Margin="10, 0, 0, 0">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
-
- <Image
- Grid.Column="0"
- DataContext="{Binding ImageSource, Converter={StaticResource ImageConverter}}"
- Source="{Binding Value}"
- VerticalAlignment="Center"
- />
-
- <StackPanel Grid.Column="1">
- <TextBlock
- Style="{StaticResource PhoneTextExtraLargeStyle}"
- Text="{Binding Text,Converter={StaticResource LowerConverter}}"
- Foreground="{Binding TextColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- />
-
- <TextBlock
- Style="{StaticResource PhoneTextAccentStyle}"
- Text="{Binding Detail}"
- Foreground="{Binding DetailColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneAccentBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- />
- </StackPanel>
- </Grid>
- </Button.Content>
- </Button>
- </DataTemplate>
-
- <DataTemplate x:Key="ListImageCell">
- <Button Margin="0,10,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" IsEnabled="{Binding IsEnabled}">
- <Button.Template>
- <ControlTemplate>
- <Grid Background="{Binding Background,RelativeSource={RelativeSource TemplatedParent}}">
- <ContentPresenter />
- </Grid>
- </ControlTemplate>
- </Button.Template>
- <Button.Content>
- <Grid Margin="10, 0, 0, 0">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
-
- <Image
- Grid.Column="0"
- DataContext="{Binding ImageSource, Converter={StaticResource ImageConverter}}"
- Source="{Binding Value}"
- VerticalAlignment="Center"
- />
-
- <StackPanel Grid.Column="1">
- <TextBlock
- Style="{StaticResource PhoneTextLargeStyle}"
- Text="{Binding Text}"
- Foreground="{Binding TextColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- forms:ListViewRenderer.HighlightWhenSelected="True"
- />
-
- <TextBlock
- Style="{StaticResource PhoneTextAccentStyle}"
- Text="{Binding Detail}"
- Foreground="{Binding DetailColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneAccentBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- forms:ListViewRenderer.HighlightWhenSelected="True"
- />
- </StackPanel>
- </Grid>
- </Button.Content>
- </Button>
- </DataTemplate>
-
- <DataTemplate x:Key="ListViewTextCell">
- <Button Margin="0,10,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" IsEnabled="{Binding IsEnabled}">
- <Button.Template>
- <ControlTemplate>
- <Grid Background="{Binding Background,RelativeSource={RelativeSource TemplatedParent}}">
- <ContentPresenter />
- </Grid>
- </ControlTemplate>
- </Button.Template>
- <Button.Content>
- <StackPanel>
- <TextBlock
- Style="{StaticResource PhoneTextLargeStyle}"
- Text="{Binding Text}"
- Foreground="{Binding TextColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- forms:ListViewRenderer.HighlightWhenSelected="True"
- />
-
- <TextBlock
- Style="{StaticResource PhoneTextAccentStyle}"
- Text="{Binding Detail}"
- Foreground="{Binding DetailColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneAccentBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- toolkit:TiltEffect.IsTiltEnabled="True"
- forms:ListViewRenderer.HighlightWhenSelected="True"
- />
- </StackPanel>
- </Button.Content>
- </Button>
- </DataTemplate>
-
- <DataTemplate x:Key="EntryCell">
- <Grid HorizontalAlignment="Stretch">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
-
- <Grid.Children>
- <TextBlock forms:ListViewRenderer.HighlightWhenSelected="True" Style="{StaticResource PhoneTextLargeStyle}"
- Text="{Binding Label}"
- Foreground="{Binding LabelColor,Converter={StaticResource ColorConverter},ConverterParameter=PhoneForegroundBrush}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- VerticalAlignment="Center"
- Grid.Column="0"
- />
- <forms:EntryCellPhoneTextBox
- IsEnabled="{Binding IsEnabled}"
- Hint="{Binding Placeholder}"
- Text="{Binding Text, Mode=TwoWay}"
- InputScope="{Binding Keyboard, Converter={StaticResource KeyboardConverter}}"
- VerticalAlignment="Center"
- TextAlignment="{Binding HorizontalTextAlignment, Converter={StaticResource HorizontalTextAlignmentConverter}}"
- Grid.Column="1"
- >
- <i:Interaction.Triggers>
- <i:EventTrigger EventName="KeyboardReturnPressed">
- <i:InvokeCommandAction Command="{StaticResource EntryCellRendererCompleted}" CommandParameter="{Binding}" />
- </i:EventTrigger>
- </i:Interaction.Triggers>
- </forms:EntryCellPhoneTextBox>
- </Grid.Children>
- </Grid>
- </DataTemplate>
-
- <DataTemplate x:Key="SwitchCell">
- <toolkit:ToggleSwitch Content="{Binding Text}" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}"
- IsChecked="{Binding On, Mode=TwoWay}" IsEnabled="{Binding IsEnabled}" FontFamily="{StaticResource PhoneFontFamilyNormal}" />
- </DataTemplate>
-
- <DataTemplate x:Key="TabbedPage">
- <forms:TabbedPagePresenter Content="{Binding Converter={StaticResource PageToRenderer}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="TabbedPageHeader">
- <TextBlock Text="{Binding Title, Converter={StaticResource LowerConverter}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="CarouselPage">
- <forms:CarouselPagePresenter Content="{Binding Converter={StaticResource PageToRenderer}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="PickerItemTemplate">
- <StackPanel>
- <TextBlock Text="{Binding Data}" Opacity="{Binding Opacity}"/>
- </StackPanel>
- </DataTemplate>
-
- <DataTemplate x:Key="PickerFullItemTemplate">
- <StackPanel MaxHeight="{Binding MaxHeight}">
- <TextBlock Text="{Binding Data}" FontSize="43" />
- </StackPanel>
- </DataTemplate>
-
- <!-- Overriding the PhoneTextBox Style so we can handle Placeholder alignment -->
- <forms:TextAlignmentToHorizontalAlignmentConverter x:Key="AlignmentConverter" />
- <Style TargetType="forms:FormsPhoneTextBox">
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}" />
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}" />
- <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}" />
- <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}" />
- <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}" />
- <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}" />
- <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}" />
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}" />
- <Setter Property="Padding" Value="{StaticResource PhoneBorderThickness}" />
- <Setter Property="PlaceholderForegroundBrush" Value="{StaticResource PhoneTextBoxReadOnlyBrush}" />
-
- <Setter Property="Template">
- <Setter.Value>
-
- <ControlTemplate TargetType="forms:FormsPhoneTextBox">
-
- <Grid Background="Transparent" x:Name="RootGrid">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
- Storyboard.TargetName="HintBorder">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Collapsed</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
- Storyboard.TargetName="TextBorder">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Visible</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush"
- Storyboard.TargetName="TextBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin"
- Storyboard.TargetName="TextBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="HorizontalAlignment"
- Storyboard.TargetName="Text">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <HorizontalAlignment>Stretch</HorizontalAlignment>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Focused">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background"
- Storyboard.TargetName="HintBorder">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{StaticResource PhoneTextBoxEditBackgroundBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush"
- Storyboard.TargetName="HintBorder">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{StaticResource PhoneTextBoxEditBorderBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Unfocused" />
- </VisualStateGroup>
- <VisualStateGroup x:Name="LengthIndicatorStates">
- <VisualState x:Name="LengthIndicatorVisible">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
- Storyboard.TargetName="LengthIndicator">
- <DiscreteObjectKeyFrame KeyTime="0:0:0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Visible</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
-
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
- Storyboard.TargetProperty="Margin">
- <DiscreteObjectKeyFrame KeyTime="0:0:0"
- Value="0, 0, 0, 27" />
- </ObjectAnimationUsingKeyFrames>
-
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
- Storyboard.TargetName="LengthIndicator">
- <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="0.6" />
- </ObjectAnimationUsingKeyFrames>
-
- <DoubleAnimation Storyboard.TargetName="LengthIndicator"
- Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)"
- To="32"
- Duration="0:0:0.350">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase Exponent="6" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="LengthIndicatorHidden">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="LengthIndicator"
- Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)"
- To="0"
- Duration="0:0:0.350">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase Exponent="6" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
-
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
- Storyboard.TargetProperty="Margin">
- <DiscreteObjectKeyFrame KeyTime="0:0:0"
- Value="0, 0, 0, 0" />
- </ObjectAnimationUsingKeyFrames>
-
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
- Storyboard.TargetName="LengthIndicator">
- <DiscreteObjectKeyFrame KeyTime="0:0:0.350" Value="0" />
- </ObjectAnimationUsingKeyFrames>
-
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
- Storyboard.TargetName="LengthIndicator">
- <DiscreteObjectKeyFrame KeyTime="0:0:0.350">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Collapsed</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
-
- <Border x:Name="LengthIndicatorBorder">
- <TextBlock Foreground="{StaticResource PhoneContrastBackgroundBrush}"
- HorizontalAlignment="Right"
- TextAlignment="Right"
- VerticalAlignment="Bottom"
- Margin="{StaticResource PhoneMargin}"
- FontSize="{StaticResource PhoneFontSizeNormal}"
- Opacity="0"
- x:Name="LengthIndicator">
- <TextBlock.RenderTransform>
- <TranslateTransform />
- </TextBlock.RenderTransform>
- </TextBlock>
- </Border>
-
- <Border x:Name="HintBorder"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Background="{TemplateBinding Background}"
- Margin="{StaticResource PhoneTouchTargetOverhang}">
- <Grid>
- <ContentControl x:Name="HintContent"
- Style="{TemplateBinding HintStyle}"
- Content="{TemplateBinding Hint}"
- Foreground="{TemplateBinding PlaceholderForegroundBrush}"
- Background="Transparent"
- HorizontalAlignment="{Binding TextAlignment,
- RelativeSource={RelativeSource Mode=TemplatedParent},
- Converter={StaticResource AlignmentConverter}}"
- VerticalAlignment="Center"
- Margin="3,0,3,0"
- Visibility="{TemplateBinding ActualHintVisibility}" />
- <ContentControl x:Name="ContentElement"
- BorderThickness="0"
- HorizontalContentAlignment="Stretch"
- Margin="{StaticResource PhoneTextBoxInnerMargin}"
- Padding="{TemplateBinding Padding}"
- VerticalContentAlignment="Stretch" />
- </Grid>
- </Border>
- <Border x:Name="TextBorder"
- BorderBrush="{StaticResource PhoneDisabledBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Background="Transparent"
- Margin="{StaticResource PhoneTouchTargetOverhang}"
- Visibility="Collapsed">
- <TextBox x:Name="Text"
- Foreground="{StaticResource PhoneDisabledBrush}"
- FontWeight="{TemplateBinding FontWeight}"
- FontStyle="{TemplateBinding FontStyle}"
- FontSize="{TemplateBinding FontSize}"
- FontFamily="{TemplateBinding FontFamily}"
- SelectionForeground="{TemplateBinding SelectionForeground}"
- SelectionBackground="{TemplateBinding SelectionBackground}"
- TextAlignment="{TemplateBinding TextAlignment}"
- TextWrapping="{TemplateBinding TextWrapping}"
- Text="{TemplateBinding DisabledText}"
-
- HorizontalAlignment="Left" />
- </Border>
- <Border x:Name="ActionIconBorder"
- Width="84"
- Height="72"
- Background="Transparent"
- HorizontalAlignment="Right"
- VerticalAlignment="Bottom">
- <Image x:Name="ActionIcon"
- Width="26"
- Height="26"
- Source="{TemplateBinding ActionIcon}" />
- </Border>
-
- <TextBlock x:Name="MeasurementTextBlock"
- Margin="8"
- IsHitTestVisible="False"
- Opacity="0"
- FontFamily="{TemplateBinding FontFamily}"
- FontSize="{TemplateBinding FontSize}"
- FontStretch="{TemplateBinding FontStretch}"
- TextAlignment="{TemplateBinding TextAlignment}"
- FontWeight="{TemplateBinding FontWeight}"
- FontStyle="{TemplateBinding FontStyle}"
- TextWrapping="{TemplateBinding TextWrapping}"
- Text="{TemplateBinding Text}" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.IO;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinPhone
-{
- public class WebViewRenderer : ViewRenderer<WebView, WebBrowser>, IWebViewDelegate
- {
- WebNavigationEvent _eventState;
- bool _updating;
-
- IWebViewController ElementController => Element;
-
- public async void LoadHtml(string html, string baseUrl)
- {
- string fileName = string.Format("formslocal_{0}.html", DateTime.Now.Ticks);
-
- await SaveToIsoStore(fileName, html);
- Control.Navigate(new Uri(fileName, UriKind.Relative));
- }
-
- public void LoadUrl(string url)
- {
- Control.Source = new Uri(url, UriKind.RelativeOrAbsolute);
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
- {
- base.OnElementChanged(e);
-
- if (Control == null)
- {
- var webBrowser = new WebBrowser();
- webBrowser.IsScriptEnabled = true;
- webBrowser.Navigated += WebBrowserOnNavigated;
- webBrowser.Navigating += WebBrowserOnNavigating;
- webBrowser.NavigationFailed += WebBrowserOnNavigationFailed;
- SetNativeControl(webBrowser);
- }
-
- if (e.OldElement != null)
- {
- var oldElementController = e.OldElement as IWebViewController;
- oldElementController.EvalRequested -= OnEvalRequested;
- oldElementController.GoBackRequested -= OnGoBackRequested;
- oldElementController.GoForwardRequested -= OnGoForwardRequested;
- Control.DataContext = null;
- }
-
- if (e.NewElement != null)
- {
- var newElementController = e.NewElement as IWebViewController;
- newElementController.EvalRequested += OnEvalRequested;
- newElementController.GoBackRequested += OnGoBackRequested;
- newElementController.GoForwardRequested += OnGoForwardRequested;
- Control.DataContext = e.NewElement;
- }
-
- Load();
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- switch (e.PropertyName)
- {
- case "Source":
- if (!_updating)
- Load();
- break;
- }
- }
-
- void Load()
- {
- if (Element.Source != null)
- Element.Source.Load(this);
-
- UpdateCanGoBackForward();
- }
-
- void OnEvalRequested(object sender, EvalRequested eventArg)
- {
- Control.Dispatcher.BeginInvoke(() => Control.InvokeScript("eval", eventArg.Script));
- }
-
- void OnGoBackRequested(object sender, EventArgs eventArgs)
- {
- if (Control.CanGoBack)
- {
- _eventState = WebNavigationEvent.Back;
- Control.GoBack();
- }
-
- UpdateCanGoBackForward();
- }
-
- void OnGoForwardRequested(object sender, EventArgs eventArgs)
- {
- if (Control.CanGoForward)
- {
- _eventState = WebNavigationEvent.Forward;
- Control.GoForward();
- }
- UpdateCanGoBackForward();
- }
-
- async Task SaveToIsoStore(string fileName, string html)
- {
- IIsolatedStorageFile store = Device.PlatformServices.GetUserStoreForApplication();
- using (Stream file = await store.OpenFileAsync(fileName, Internals.FileMode.CreateNew, Internals.FileAccess.Write).ConfigureAwait(false))
- {
- byte[] bytes = Encoding.UTF8.GetBytes(html);
- await file.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
- }
- }
-
- void SendNavigated(UrlWebViewSource source, WebNavigationEvent evnt, WebNavigationResult result)
- {
- _updating = true;
- ((IElementController)Element).SetValueFromRenderer(WebView.SourceProperty, source);
- _updating = false;
-
- ElementController.SendNavigated(new WebNavigatedEventArgs(evnt, source, source.Url, result));
-
- UpdateCanGoBackForward();
- _eventState = WebNavigationEvent.NewPage;
- }
-
- // Nasty hack because we cant bind this because OneWayToSource isn't a thing in WP8, yay
- void UpdateCanGoBackForward()
- {
- ElementController.CanGoBack = Control.CanGoBack;
- ElementController.CanGoForward = Control.CanGoForward;
- }
-
- void WebBrowserOnNavigated(object sender, System.Windows.Navigation.NavigationEventArgs navigationEventArgs)
- {
- string url = navigationEventArgs.Uri.IsAbsoluteUri ? navigationEventArgs.Uri.AbsoluteUri : navigationEventArgs.Uri.OriginalString;
- SendNavigated(new UrlWebViewSource { Url = url }, _eventState, WebNavigationResult.Success);
-
- UpdateCanGoBackForward();
- }
-
- void WebBrowserOnNavigating(object sender, NavigatingEventArgs navigatingEventArgs)
- {
- string url = navigatingEventArgs.Uri.IsAbsoluteUri ? navigatingEventArgs.Uri.AbsoluteUri : navigatingEventArgs.Uri.OriginalString;
- var args = new WebNavigatingEventArgs(_eventState, new UrlWebViewSource { Url = url }, url);
-
- ElementController.SendNavigating(args);
-
- navigatingEventArgs.Cancel = args.Cancel;
-
- // reset in this case because this is the last event we will get
- if (args.Cancel)
- _eventState = WebNavigationEvent.NewPage;
- }
-
- void WebBrowserOnNavigationFailed(object sender, NavigationFailedEventArgs navigationFailedEventArgs)
- {
- string url = navigationFailedEventArgs.Uri.IsAbsoluteUri ? navigationFailedEventArgs.Uri.AbsoluteUri : navigationFailedEventArgs.Uri.OriginalString;
- SendNavigated(new UrlWebViewSource { Url = url }, _eventState, WebNavigationResult.Failure);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Windows.Threading;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms
-{
- internal class WinPhoneTicker : Ticker
- {
- readonly DispatcherTimer _timer;
-
- public WinPhoneTicker()
- {
- _timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(15) };
- _timer.Tick += (sender, args) => SendSignals();
- }
-
- protected override void DisableTimer()
- {
- _timer.Stop();
- }
-
- protected override void EnableTimer()
- {
- _timer.Start();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.20506</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{517B6AE0-792B-4665-9376-5CA33E539181}</ProjectGuid>
- <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Platform.WinPhone</RootNamespace>
- <AssemblyName>Xamarin.Forms.Platform.WP8</AssemblyName>
- <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
- <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
- <SilverlightApplication>false</SilverlightApplication>
- <ValidateXaml>true</ValidateXaml>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
- <RestorePackages>true</RestorePackages>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </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>
- <NoWarn>0114;4014;0219;0067</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0114;4014;0219;0067</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0114;4014;0219;0067</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <NoWarn>0114;4014;0219;0067</NoWarn>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
- <Link>Properties\GlobalAssemblyInfo.cs</Link>
- </Compile>
- <Compile Include="ActivityIndicatorRenderer.cs" />
- <Compile Include="AlignmentExtensions.cs" />
- <Compile Include="Animatable.cs" />
- <Compile Include="AsyncValue.cs" />
- <Compile Include="BrushHelpers.cs" />
- <Compile Include="CellControl.cs" />
- <Compile Include="CollapseWhenEmptyConverter.cs" />
- <Compile Include="ConcurrentDictionary.cs" />
- <Compile Include="Deserializer.cs" />
- <Compile Include="CustomContextMenu.cs" />
- <Compile Include="ElementChangedEventArgs.cs" />
- <Compile Include="ExportCellAttribute.cs" />
- <Compile Include="ExportImageSourceHandlerAttribute.cs" />
- <Compile Include="ExportRendererAttribute.cs" />
- <Compile Include="Extensions.cs" />
- <Compile Include="FontExtensions.cs" />
- <Compile Include="Forms.cs" />
- <Compile Include="FormsApplicationPage.cs" />
- <Compile Include="FormsListPicker.cs" />
- <Compile Include="FormsPhoneTextBox.cs" />
- <Compile Include="FrameworkElementExtensions.cs" />
- <Compile Include="LayoutExtensions.cs" />
- <Compile Include="MD5.cs" />
- <Compile Include="MD5CryptoServiceProvider.cs" />
- <Compile Include="NativeViewWrapper.cs" />
- <Compile Include="NativeViewWrapperRenderer.cs" />
- <Compile Include="PageToRendererConverter.cs" />
- <Compile Include="PlatformEffect.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="BoxViewRenderer.cs" />
- <Compile Include="ButtonRenderer.cs" />
- <Compile Include="CarouselPageRenderer.cs" />
- <Compile Include="Converters\CaseConverter.cs" />
- <Compile Include="Converters\ColorConverter.cs" />
- <Compile Include="Converters\ImageConverter.cs" />
- <Compile Include="Converters\KeyboardConverter.cs" />
- <Compile Include="Converters\HorizontalTextAlignmentConverter.cs" />
- <Compile Include="CellTemplateSelector.cs" />
- <Compile Include="ConvertExtensions.cs" />
- <Compile Include="DataTemplateSelector.cs" />
- <Compile Include="DatePickerRenderer.cs" />
- <Compile Include="EditorRenderer.cs" />
- <Compile Include="EntryRenderer.cs" />
- <Compile Include="FrameRenderer.cs" />
- <Compile Include="ICellRenderer.cs" />
- <Compile Include="ImageRenderer.cs" />
- <Compile Include="IVisualElementRenderer.cs" />
- <Compile Include="LabelRenderer.cs" />
- <Compile Include="ListViewRenderer.cs" />
- <Compile Include="MasterDetailRenderer.cs" />
- <Compile Include="NavigationMenuRenderer.cs" />
- <Compile Include="NavigationPageRenderer.cs" />
- <Compile Include="PageRenderer.cs" />
- <Compile Include="Platform.cs" />
- <Compile Include="ProgressBarRenderer.cs" />
- <Compile Include="RendererFactory.cs" />
- <Compile Include="ResourcesProvider.cs" />
- <Compile Include="ScrollViewRenderer.cs" />
- <Compile Include="SearchBarRenderer.cs" />
- <Compile Include="SliderRenderer.cs" />
- <Compile Include="SplitOrderedList.cs" />
- <Compile Include="StepperRenderer.cs" />
- <Compile Include="SwitchRenderer.cs" />
- <Compile Include="TabbedPageRenderer.cs" />
- <Compile Include="TableView.xaml.cs">
- <DependentUpon>TableView.xaml</DependentUpon>
- </Compile>
- <Compile Include="TableViewRenderer.cs" />
- <Compile Include="TaskExtensions.cs" />
- <Compile Include="TextAlignmentToHorizontalAlignmentConverter.cs" />
- <Compile Include="TextCellRenderer.cs" />
- <Compile Include="TimePickerRenderer.cs" />
- <Compile Include="ViewExtensions.cs" />
- <Compile Include="VisualElementPackager.cs" />
- <Compile Include="ViewRenderer.cs" />
- <Compile Include="ViewToRendererConverter.cs" />
- <Compile Include="VisualElementRenderer.cs" />
- <Compile Include="VisualElementTracker.cs" />
- <Compile Include="WebViewRenderer.cs" />
- <Compile Include="PickerRenderer.cs" />
- <Compile Include="WinPhoneTicker.cs" />
- <Compile Include="WP8PlatformServices.cs" />
- </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="System.Windows.Interactivity, Version=3.9.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
- </ItemGroup>
- <ItemGroup>
- <None Include="packages.config" />
- <Content Include="ServiceReferences.ClientConfig" />
- </ItemGroup>
- <ItemGroup>
- <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>
- <Page Include="TableView.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- <Page Include="WPResources.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
- <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
- <ProjectExtensions />
- <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.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>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
-</packages>
+++ /dev/null
-using System;
-using System.Diagnostics;
-using Windows.ApplicationModel.Activation;
-using Windows.Phone.UI.Input;
-using Windows.UI.ViewManagement;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Xamarin.Forms.Internals;
-using Xamarin.Forms.Platform.WinRT;
-
-namespace Xamarin.Forms
-{
- public static class Forms
- {
- public static void Init (IActivatedEventArgs launchActivatedEventArgs)
- {
- if (s_isInitialized)
- return;
-
- var accent = (SolidColorBrush)Windows.UI.Xaml.Application.Current.Resources["SystemColorControlAccentBrush"];
- Color.SetAccent(Color.FromRgba (accent.Color.R, accent.Color.G, accent.Color.B, accent.Color.A));
-
- Log.Listeners.Add (new DelegateLogListener ((c, m) => Debug.WriteLine (LogFormat, c, m)));
-
- Windows.UI.Xaml.Application.Current.Resources.MergedDictionaries.Add (GetPhoneResources());
-
- Device.PlatformServices = new WindowsPhonePlatformServices (Window.Current.Dispatcher);
- Device.Info = new WindowsDeviceInfo();
- Device.SetIdiom(TargetIdiom.Phone);
-
- Ticker.SetDefault(new WindowsTicker());
-
- ExpressionSearch.Default = new WindowsExpressionSearch();
-
- Registrar.RegisterAll (new[] {
- typeof (ExportRendererAttribute),
- typeof (ExportCellAttribute),
- typeof (ExportImageSourceHandlerAttribute)
- });
-
- MessagingCenter.Subscribe<Page, bool> (Device.PlatformServices, Page.BusySetSignalName, OnPageBusy);
-
- HardwareButtons.BackPressed += OnBackPressed;
-
- s_isInitialized = true;
- s_state = launchActivatedEventArgs.PreviousExecutionState;
- }
-
- static void OnBackPressed (object sender, BackPressedEventArgs e)
- {
- Application app = Application.Current;
- if (app == null)
- return;
-
- Page page = app.MainPage;
- if (page == null)
- return;
-
- var platform = page.Platform as Platform.WinRT.Platform;
- if (platform == null)
- return;
-
- e.Handled = platform.BackButtonPressed ();
- }
-
- static ApplicationExecutionState s_state;
- static bool s_isInitialized;
-
- const string LogFormat = "[{0}] {1}";
-
- static async void OnPageBusy (Page sender, bool enabled)
- {
- StatusBar status = StatusBar.GetForCurrentView ();
- if (enabled) {
- status.ProgressIndicator.ProgressValue = null;
- await status.ProgressIndicator.ShowAsync ();
- } else
- await status.ProgressIndicator.HideAsync ();
- }
-
- static Windows.UI.Xaml.ResourceDictionary GetPhoneResources ()
- {
- return new Windows.UI.Xaml.ResourceDictionary {
- Source = new Uri ("ms-appx:///Xamarin.Forms.Platform.WinRT.Phone/PhoneResources.xbf")
- };
- }
-
- static Windows.UI.Xaml.ResourceDictionary GetResources (UserControl control)
- {
- var gresources = control.Resources.MergedDictionaries[0];
- control.Resources.MergedDictionaries.Remove (gresources);
-
- return gresources;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:winRt="using:Xamarin.Forms.Platform.WinRT">
-
- <!-- Default style for Windows.UI.Xaml.Controls.ProgressBar -->
- <Style x:Key="FormsProgressBarStyle" TargetType="winRt:FormsProgressBar">
- <Setter Property="Foreground" Value="{ThemeResource ProgressBarForegroundThemeBrush}" />
- <Setter Property="Background" Value="{ThemeResource ProgressBarBackgroundThemeBrush}" />
- <Setter Property="BorderBrush" Value="{ThemeResource ProgressBarBorderThemeBrush}" />
- <Setter Property="BorderThickness" Value="{ThemeResource ProgressBarBorderThemeThickness}" />
- <Setter Property="Maximum" Value="100" />
- <Setter Property="MinHeight" Value="{ThemeResource ProgressBarThemeMinHeight}" />
- <Setter Property="IsTabStop" Value="False" />
- <Setter Property="VerticalAlignment" Value="Center" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ProgressBar">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualStateGroup.Transitions>
- <VisualTransition From="Updating" To="Determinate">
- <Storyboard>
- <RepositionThemeAnimation TargetName="ProgressBarIndicator" FromHorizontalOffset="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.IndicatorLengthDelta}" />
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Paused" To="Determinate">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator"
- Storyboard.TargetProperty="Opacity"
- To="1"
- Duration="0:0:0.25" />
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Indeterminate">
- <Storyboard>
- <FadeInThemeAnimation TargetName="EllipseGrid" />
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Determinate" />
- <VisualState x:Name="Updating" />
- <VisualState x:Name="Indeterminate">
- <Storyboard RepeatBehavior="Forever">
- <DoubleAnimation Storyboard.TargetName="EllipseGrid"
- Duration="0:0:3.917"
- Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
- From="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationStartPosition}"
- To="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationEndPosition}" />
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E1">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E2">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E3">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E4">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E5">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B1">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B2">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B3">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.833" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B4">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B5">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:1.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <!-- The ElementOpacity on FormsProgressBar is used in place of Opacity so that the user may specify
- a particular value they might wish to use, and also prevents unintended interactions between
- Element.Opacity and Control.Opacity. -->
- <DoubleAnimation Storyboard.TargetName="EllipseGrid"
- Storyboard.TargetProperty="Opacity"
- To="{Binding ElementOpacity, RelativeSource={RelativeSource TemplatedParent}}"
- Duration="0" />
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E1"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E2"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E3"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E4"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E5"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <!-- Both FadeOutThemeAnimation and a DoubleAnimation on Opacity are necessary
- here. The FadeOutThemeAnimation is necessary in the Indeterminate state so
- that we can do a FadeInThemeAnimation when transitioning back to the
- Determinate state. The DoubleAnimation on Opacity is necessary to hide the
- DeterminateRoot immediately so that it does not slowly fade out during each
- iteration of the Indeterminate state animation. -->
- <FadeOutThemeAnimation TargetName="DeterminateRoot" />
- <DoubleAnimation Storyboard.TargetName="DeterminateRoot"
- Storyboard.TargetProperty="Opacity"
- To="0"
- Duration="0" />
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E1">
- <EasingDoubleKeyFrame KeyTime="0" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E2">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E3">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E4">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E5">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Error">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ProgressBarIndicator">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Paused">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator"
- Storyboard.TargetProperty="Opacity"
- To="0.5"
- Duration="0:0:0.25" />
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="EllipseGrid"
- Opacity="0">
- <Grid.RenderTransform>
- <TranslateTransform />
- </Grid.RenderTransform>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <Border x:Name="B1"
- Grid.Column="8"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E1"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="7"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B2"
- Grid.Column="6"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E2"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="5"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B3"
- Grid.Column="4"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E3"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="3"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B4"
- Grid.Column="2"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E4"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="1"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B5"
- Grid.Column="0"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E5"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- </Grid>
- <Border x:Name="DeterminateRoot"
- Background="{TemplateBinding Background}"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}">
- <Rectangle x:Name="ProgressBarIndicator"
- Margin="{TemplateBinding Padding}"
- Fill="{TemplateBinding Foreground}"
- HorizontalAlignment="Left" />
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:forms="using:Xamarin.Forms.Platform.WinRT"
- xmlns:system="using:System">
-
- <forms:TextAlignmentToHorizontalAlignmentConverter x:Key="AlignmentConverter" />
-
- <Style x:Key="FormsTextBoxStyle" TargetType="forms:FormsTextBox">
- <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
- <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
- <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
- <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
- <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
- <Setter Property="BackgroundFocusBrush" Value="{ThemeResource TextBoxFocusedBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
- <Setter Property="BorderThickness" Value="0"/>
- <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
- <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
- <Setter Property="PlaceholderForegroundBrush" Value="{ThemeResource TextBoxPlaceholderTextThemeBrush}" />
- <Setter Property="TextWrapping" Value="NoWrap"/>
- <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto"/>
- <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/>
- <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
- <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
- <Setter Property="Margin" Value="0"/>
- <Setter Property="VerticalAlignment" Value="Top"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="forms:FormsTextBox">
- <Grid Background="Transparent">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledHeaderForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextContentPresenter"/>
- <!-- The commented-out section below *should* work, at least according to the docs and examples; but
- instead it just crashes the application as soon as you focus a textbox. So the forms textbox class handles this
- state manually in the phone version. I'm leaving this here in case someone can figure it out, because the VSM
- is a much more elegant solution. (e.g., see the UWP project, where this *does* work) -->
- <!--<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding BackgroundFocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>-->
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="BorderElement"
- BorderBrush="{TemplateBinding BorderBrush}"
- Background="{TemplateBinding Background}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Grid.Row="1"/>
- <ContentPresenter x:Name="HeaderContentPresenter"
- ContentTemplate="{TemplateBinding HeaderTemplate}"
- Content="{TemplateBinding Header}"
- Margin="{ThemeResource TextControlHeaderMarginThemeThickness}"
- Grid.Row="0" Style="{StaticResource HeaderContentPresenterStyle}"/>
- <ScrollViewer x:Name="ContentElement"
- AutomationProperties.AccessibilityView="Raw"
- Background="{Binding BackgroundFocusBrush, RelativeSource={RelativeSource TemplatedParent}}"
- HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
- HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
- IsTabStop="False"
- IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
- IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
- IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
- Margin="{TemplateBinding BorderThickness}"
- MinHeight="{ThemeResource TextControlThemeMinHeight}"
- Padding="{TemplateBinding Padding}"
- Grid.Row="1"
- FontSize="{ThemeResource ContentControlFontSize}"
- VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
- VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
- ZoomMode="Disabled"/>
- <ContentControl x:Name="PlaceholderTextContentPresenter"
- Content="{TemplateBinding PlaceholderText}"
- Foreground="{TemplateBinding PlaceholderForegroundBrush}"
- FontSize="{ThemeResource ContentControlFontSize}"
- IsTabStop="False"
- Margin="{ThemeResource RichEditBoxTextThemeMargin}"
- Padding="{TemplateBinding Padding}"
- Grid.Row="1"
- HorizontalAlignment="{Binding TextAlignment, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource AlignmentConverter}}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-</ResourceDictionary>
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.Platform.WinRT">
-
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source="Resources.xaml" />
- <ResourceDictionary Source="FormsTextBoxStyle.xaml" />
- <ResourceDictionary Source="FormsProgressBarStyle.xaml" />
- </ResourceDictionary.MergedDictionaries>
-
- <!-- Fixes button sizing, including background outside the border -->
- <Thickness x:Key="PhoneTouchTargetOverhang">0</Thickness>
- <Style TargetType="Button">
- <Setter Property="MinHeight" Value="38.5" />
- </Style>
-
- <Style TargetType="local:FormsButton">
- <Setter Property="MinHeight" Value="38.5" />
- </Style>
-
- <Style TargetType="ToggleSwitch">
- <Setter Property="Foreground" Value="{ThemeResource ToggleSwitchForegroundThemeBrush}"/>
- <Setter Property="HorizontalAlignment" Value="Stretch"/>
- <Setter Property="VerticalAlignment" Value="Center"/>
- <Setter Property="HorizontalContentAlignment" Value="Left"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontWeight" Value="SemiBold"/>
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
- <Setter Property="Margin" Value="0"/>
- <Setter Property="Padding" Value="0,0,25.5,0"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ToggleSwitch">
- <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="PointerOver"/>
- <VisualState x:Name="Pressed"/>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OffContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OnContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="OuterBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchOuterBorderDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchCurtain">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchCurtainDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ToggleStates">
- <VisualStateGroup.Transitions>
- <VisualTransition x:Name="DraggingToOnTransition" From="Dragging" GeneratedDuration="0" To="On">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="DraggingToOffTransition" From="Dragging" GeneratedDuration="0" To="Off">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="OnToOffTransition" From="On" GeneratedDuration="0" To="Off">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="OffToOnTransition" From="Off" GeneratedDuration="0" To="On">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Dragging"/>
- <VisualState x:Name="Off">
- <Storyboard>
- <DoubleAnimation Duration="0" To="-64" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="On">
- <Storyboard>
- <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
- <DoubleAnimation Duration="0" To="56.5" Storyboard.TargetProperty="X" Storyboard.TargetName="KnobTranslateTransform"/>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ContentStates">
- <VisualState x:Name="OffContent">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OffContentPresenter"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OffContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="OnContent">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OnContentPresenter"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OnContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid Background="Transparent">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="13.5"/>
- <ColumnDefinition Width="77"/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="9.5"/>
- </Grid.RowDefinitions>
- <ContentPresenter x:Name="HeaderContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource ToggleSwitchHeaderForegroundThemeBrush}" Margin="{TemplateBinding Padding}" Style="{StaticResource HeaderContentPresenterStyle}"/>
- <Grid Margin="{TemplateBinding Padding}" Grid.Row="1">
- <ContentPresenter x:Name="OffContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OffContentTemplate}" Content="{TemplateBinding OffContent}" FontWeight="Normal" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" FontFamily="{ThemeResource PhoneFontFamilyNormal}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- <ContentPresenter x:Name="OnContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OnContentTemplate}" Content="{TemplateBinding OnContent}" FontWeight="Normal" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" FontFamily="{ThemeResource PhoneFontFamilyNormal}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Grid>
- <Grid Grid.Column="2" ManipulationMode="None" Grid.Row="0" Grid.RowSpan="2" VerticalAlignment="Bottom">
- <Grid x:Name="SwitchKnobBounds" Height="36">
- <Border x:Name="OuterBorder" BorderBrush="{ThemeResource ToggleSwitchOuterBorderBorderThemeBrush}" BorderThickness="2.5" Margin="3,4.5,3,4.5">
- <Border x:Name="InnerBorder" BorderBrush="{ThemeResource ToggleSwitchTrackBorderThemeBrush}" BorderThickness="2.5">
- <ContentPresenter x:Name="SwitchCurtainBounds">
- <ContentPresenter x:Name="SwitchCurtainClip">
- <Rectangle x:Name="SwitchCurtain" Fill="{ThemeResource ToggleSwitchCurtainBackgroundThemeBrush}" Width="64">
- <Rectangle.RenderTransform>
- <TranslateTransform x:Name="CurtainTranslateTransform" X="-64"/>
- </Rectangle.RenderTransform>
- </Rectangle>
- </ContentPresenter>
- </ContentPresenter>
- </Border>
- </Border>
- <Rectangle x:Name="SwitchKnob" Fill="{ThemeResource ToggleSwitchThumbBackgroundThemeBrush}" HorizontalAlignment="Left" Stroke="{ThemeResource ToggleSwitchThumbBorderThemeBrush}" StrokeThickness="2.5" Width="20.5">
- <Rectangle.RenderTransform>
- <TranslateTransform x:Name="KnobTranslateTransform"/>
- </Rectangle.RenderTransform>
- </Rectangle>
- </Grid>
- <Thumb x:Name="SwitchThumb" AutomationProperties.AccessibilityView="Raw" Margin="-13.5,-15.5,-13.5,-6.5">
- <Thumb.Template>
- <ControlTemplate TargetType="Thumb">
- <Rectangle Fill="Transparent"/>
- </ControlTemplate>
- </Thumb.Template>
- </Thumb>
- </Grid>
- </Grid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style x:Key="FormsListViewItem" TargetType="ListViewItem">
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ListViewItem">
- <Border x:Name="OuterContainer" RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <ScaleTransform x:Name="ContentScaleTransform"/>
- </Border.RenderTransform>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualStateGroup.Transitions>
- <VisualTransition From="Pressed" To="Normal">
- <Storyboard>
- <PointerUpThemeAnimation Storyboard.TargetName="TiltContainer"/>
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <PointerDownThemeAnimation Storyboard.TargetName="TiltContainer"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource ListViewItemDisabledThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="contentPresenter"/>
- <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Stroke" Storyboard.TargetName="NormalRectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource CheckBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="CheckGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource CheckBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SelectedBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectedEarmark">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectedGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="ReorderHintContent" Background="Transparent">
- <Border x:Name="ContentContainer">
- <Border x:Name="TiltContainer">
- <Border x:Name="ContentBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
- <Border.RenderTransform>
- <TranslateTransform x:Name="ContentBorderTranslateTransform"/>
- </Border.RenderTransform>
- <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Border>
- </Border>
- </Grid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style x:Key="TabbedPageStyle" TargetType="local:FormsPivot">
- <Setter Property="HeaderTemplate">
- <Setter.Value>
- <DataTemplate>
- <TextBlock Text="{Binding Title}" Name="TabbedPageHeaderTextBlock" />
- </DataTemplate>
- </Setter.Value>
- </Setter>
-
- <Setter Property="ItemTemplate" Value="{ThemeResource ContainedPageTemplate}" />
-
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:FormsPivot">
- <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="Orientation">
- <VisualState x:Name="Portrait">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="grdToolbar">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0,25,0,0"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
-
- </VisualState>
- <VisualState x:Name="Landscape">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="grdToolbar">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0,19,0,0"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="grdToolbar" Background="{TemplateBinding ToolbarBackground}" >
- <TextBlock Padding="10,0,0,0" Text="{TemplateBinding Title}" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Foreground="{TemplateBinding ToolbarForeground}" Visibility="{TemplateBinding TitleVisibility}" Height="79"/>
- </Grid>
- <ScrollViewer x:Name="ScrollViewer" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="{TemplateBinding Padding}" Grid.Row="1" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled">
- <PivotPanel x:Name="Panel" VerticalAlignment="Stretch">
- <PivotHeaderPanel x:Name="Header" Background="{TemplateBinding ToolbarBackground}">
- <PivotHeaderPanel.RenderTransform>
- <CompositeTransform x:Name="HeaderTranslateTransform" TranslateX="0"/>
- </PivotHeaderPanel.RenderTransform>
- </PivotHeaderPanel>
- <ItemsPresenter x:Name="PivotItemPresenter">
- <ItemsPresenter.RenderTransform>
- <TranslateTransform x:Name="ItemsPresenterTranslateTransform" X="0"/>
- </ItemsPresenter.RenderTransform>
- </ItemsPresenter>
- </PivotPanel>
- </ScrollViewer>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="TextCell">
- <StackPanel Margin="5,0,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}">
- <TextBlock
- Text="{Binding Text}"
- Style="{ThemeResource ListViewItemTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
-
- <TextBlock
- Text="{Binding Detail}"
- Style="{ThemeResource ListViewItemContentTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
- </StackPanel>
- </DataTemplate>
-
- <DataTemplate x:Key="ListViewHeaderTextCell">
- <Border Margin="5,0,0,0" Background="{ThemeResource SystemColorControlAccentBrush}" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" MinHeight="{Binding RenderHeight, Converter={StaticResource HeightConverter}, ConverterParameter=60}" MinWidth="60" Padding="6">
- <StackPanel VerticalAlignment="Bottom">
- <TextBlock
- Text="{Binding Text}"
- Style="{ThemeResource GroupHeaderTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
-
- <TextBlock
- Text="{Binding Detail}"
- Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
- </StackPanel>
- </Border>
- </DataTemplate>
-
- <DataTemplate x:Key="ImageCell">
- <Grid Margin="5,0,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition />
- </Grid.ColumnDefinitions>
-
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- </Grid.RowDefinitions>
-
- <Image Grid.Column="0" Grid.RowSpan="2"
- DataContext="{Binding ImageSource, Converter={StaticResource ImageConverter}}"
- Source="{Binding Value}"
- VerticalAlignment="Center" />
-
- <TextBlock Grid.Column="1" Grid.Row="0"
- Text="{Binding Text}"
- Style="{ThemeResource ListViewItemContentTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
-
- <TextBlock Grid.Column="1" Grid.Row="1"
- Text="{Binding Detail}"
- Style="{ThemeResource ListViewItemContentTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
- </Grid>
- </DataTemplate>
-
- <DataTemplate x:Key="SwitchCell">
- <Grid Margin="5,0,0,0" Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" HorizontalAlignment="Stretch">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
-
- <TextBlock
- Grid.Column="0" Text="{Binding Text}" VerticalAlignment="Center"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
-
- <ToggleSwitch Grid.Column="1" IsOn="{Binding On, Mode=TwoWay}" OnContent="" OffContent="" VerticalAlignment="Center" />
- </Grid>
- </DataTemplate>
-
- <DataTemplate x:Key="EntryCell">
- <local:EntryCellTextBox Margin="5,0,0,0" IsEnabled="{Binding IsEnabled}" Header="{Binding}" Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" PlaceholderText="{Binding Placeholder}" TextAlignment="{Binding HorizontalTextAlignment,Converter={StaticResource HorizontalTextAlignmentConverter}}" InputScope="{Binding Keyboard,Converter={StaticResource KeyboardConverter}}" HorizontalAlignment="Stretch">
- <local:EntryCellTextBox.HeaderTemplate>
- <DataTemplate>
- <TextBlock
- Text="{Binding Label}"
- Style="{ThemeResource ListViewItemTextBlockStyle}"
- Foreground="{Binding LabelColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
- local:ListViewRenderer.HighlightWhenSelected="true"/>
- </DataTemplate>
- </local:EntryCellTextBox.HeaderTemplate>
- </local:EntryCellTextBox>
- </DataTemplate>
-
- <ControlTemplate x:Key="MasterDetailPopup">
- <Grid Background="{TemplateBinding Background}">
- <Grid.Resources>
- <Style TargetType="local:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}">
- <Setter Property="Background" Value="Transparent" />
- </Style>
- </Grid.Resources>
-
- <Popup x:Name="popup" IsLightDismissEnabled="true">
- <Popup.ChildTransitions>
- <TransitionCollection>
- <PopupThemeTransition />
- </TransitionCollection>
- </Popup.ChildTransitions>
-
- <Border Margin="0" Padding="0" BorderThickness="0" Background="{Binding Converter={StaticResource MasterBackgroundConverter}, RelativeSource={RelativeSource Mode=TemplatedParent}}">
- <ContentPresenter x:Name="masterPresenter" />
- </Border>
- </Popup>
-
- <ContentPresenter x:Name="detailPresenter" />
- </Grid>
- </ControlTemplate>
-
- <Style x:Key="PageControlDefaultStyle" TargetType="local:PageControl">
- <Setter Property="TitleBrush" Value="{ThemeResource DefaultTextForegroundThemeBrush}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:PageControl">
- <Grid Background="{TemplateBinding Background}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
-
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="*" />
- </Grid.RowDefinitions>
-
- <Grid Height="79" Background="{TemplateBinding ToolbarBackground}" Visibility="{TemplateBinding TitleVisibility}">
- <TextBlock Margin="10,0,0,0" Name="title" Foreground="{TemplateBinding TitleBrush}" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Text="{Binding Title}" />
- </Grid>
- <ContentPresenter x:Name="presenter" Grid.Row="1" ContentTransitions="{TemplateBinding ContentTransitions}" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style TargetType="local:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}" />
-
- <DataTemplate x:Key="TabbedPage">
- <local:TabbedPagePresenter Content="{Binding Converter={StaticResource PageToRenderer}}" />
- </DataTemplate>
-
- <Style x:Key="JumpListGrid" TargetType="GridView">
- <Setter Property="Background" Value="#80000000" />
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <Border Background="{ThemeResource SystemColorControlAccentBrush}" Padding="5" Margin="3" MinHeight="80" MinWidth="80">
- <TextBlock Text="{Binding}" Style="{ThemeResource SubheaderTextBlockStyle}" VerticalAlignment="Bottom" />
- </Border>
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <GroupStyle x:Key="ListViewGroup" HidesIfEmpty="False">
- <GroupStyle.HeaderTemplate>
- <DataTemplate>
- <local:CellControl IsGroupHeader="true" HorizontalContentAlignment="Stretch" />
- </DataTemplate>
- </GroupStyle.HeaderTemplate>
- </GroupStyle>
-
- <Style TargetType="local:FormsTextBox">
- <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}" />
- <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}" />
- <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}" />
- </Style>
-
- <Style TargetType="local:FormsComboBox">
- <Setter Property="Foreground" Value="{ThemeResource ComboBoxForegroundThemeBrush}"/>
- <Setter Property="Background" Value="{ThemeResource ComboBoxBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource ComboBoxBorderThemeBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource ComboBoxBorderThemeThickness}"/>
- <Setter Property="HorizontalContentAlignment" Value="Left"/>
- <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
- <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
- <Setter Property="Margin" Value="0"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:FormsComboBox">
- <Grid x:Name="ComboBoxGrid">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualStateGroup.Transitions>
- <VisualTransition From="Pressed" To="PointerOver">
- <Storyboard>
- <PointerUpThemeAnimation Storyboard.TargetName="Background"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="PointerOver" To="Normal">
- <Storyboard>
- <PointerUpThemeAnimation Storyboard.TargetName="Background"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextBlock">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneMidBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextBlock">
- <DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Pressed" To="Normal">
- <Storyboard>
- <PointerUpThemeAnimation Storyboard.TargetName="Background"/>
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Normal">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource ComboBoxFlyoutListPlaceholderTextOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextBlock"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver"/>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <PointerDownThemeAnimation Storyboard.TargetName="Background"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxPressedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxPressedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserControl">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxPressedForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Highlighted">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxHighlightedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxHighlightedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserControl">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxHighlightedForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="FlyoutButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserControl">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextBlock">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextBlock"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="DropDownStates">
- <VisualState x:Name="Opened">
- <Storyboard>
- <DoubleAnimation Duration="0:0:0.25" EnableDependentAnimation="True"
- From="{Binding TemplateSettings.DropDownClosedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- To="{Binding TemplateSettings.DropDownOpenedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- Storyboard.TargetProperty="Height" Storyboard.TargetName="ItemsPresenterHost">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase EasingMode="EaseInOut" Exponent="6"/>
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- <DoubleAnimation Duration="0:0:0.25" To="{Binding TemplateSettings.DropDownOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- Storyboard.TargetProperty="Y"
- Storyboard.TargetName="ItemsPresenterTranslateTransform">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase EasingMode="EaseInOut" Exponent="6"/>
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="UserControl">
- <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxHighlightedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserControl">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxHighlightedForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Closed">
- <Storyboard>
- <!-- Dummy zero-duration animation so we can hook into the closing animation -->
- <DoubleAnimation Duration="0:0:0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ItemsPresenterHost" />
- <DoubleAnimation Duration="0:0:0.2" EnableDependentAnimation="True"
- From="{Binding TemplateSettings.DropDownOpenedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- To="{Binding TemplateSettings.DropDownClosedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- Storyboard.TargetProperty="Height" Storyboard.TargetName="ItemsPresenterHost">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase EasingMode="EaseInOut" Exponent="6"/>
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- <DoubleAnimation Duration="0:0:0.2"
- To="{Binding TemplateSettings.DropDownOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}"
- Storyboard.TargetProperty="Y" Storyboard.TargetName="ItemsPresenterTranslateTransform">
- <DoubleAnimation.EasingFunction>
- <ExponentialEase EasingMode="EaseInOut" Exponent="6"/>
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="PresenterStates">
- <VisualState x:Name="Full"/>
- <VisualState x:Name="InlineNormal">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FlyoutButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ShortListOuterBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="InlinePlaceholder">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FlyoutButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ShortListOuterBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
- </ObjectAnimationUsingKeyFrames>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextContentPresenter"/>
- <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ItemsPresenter"/>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" FlowDirection="{TemplateBinding FlowDirection}" HorizontalAlignment="Left" Margin="0,0,0,-4.5" Style="{StaticResource HeaderContentPresenterStyle}" Visibility="Collapsed"/>
- <Button x:Name="FlyoutButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" FontWeight="Normal" FlowDirection="{TemplateBinding FlowDirection}" FontSize="{ThemeResource ContentControlFontSize}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left" MinHeight="{ThemeResource ComboBoxItemMinHeightThemeSize}" Padding="6.5,0,0,0" Grid.Row="1">
- <ContentPresenter x:Name="ContentPresenter" Margin="0,0.8,0,0" MinHeight="32.5">
- <TextBlock x:Name="PlaceholderTextBlock" Margin="0" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" Text="{TemplateBinding PlaceholderText}"/>
- </ContentPresenter>
- </Button>
- <Border x:Name="ShortListOuterBorder" Margin="{ThemeResource PhoneTouchTargetOverhang}" Grid.Row="1" Visibility="Collapsed">
- <Border x:Name="Background" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
- <UserControl x:Name="UserControl" Foreground="{TemplateBinding Foreground}" FlowDirection="{TemplateBinding FlowDirection}" IsHitTestVisible="False">
- <Canvas x:Name="ItemsPresenterHost" HorizontalAlignment="Left" MinHeight="{ThemeResource ComboBoxItemMinHeightThemeSize}">
- <ContentPresenter x:Name="PlaceholderTextContentPresenter" Content="{TemplateBinding PlaceholderText}" Margin="{ThemeResource ComboBoxPlaceholderTextThemeMargin}" Opacity="0" Style="{StaticResource PlaceholderContentPresenterStyle}"/>
- <ItemsPresenter x:Name="ItemsPresenter" Margin="0,0.8,0,0">
- <ItemsPresenter.RenderTransform>
- <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/>
- </ItemsPresenter.RenderTransform>
- </ItemsPresenter>
- </Canvas>
- </UserControl>
- </Border>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using Xamarin.Forms;
-using Xamarin.Forms.Platform.WinRT;
-
-[assembly: AssemblyTitle("Xamarin.Forms.Platform.WinRT.Phone")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCulture("")]
-
-[assembly: Dependency (typeof (WindowsPhoneResourcesProvider))]
-
-[assembly: ExportRenderer (typeof (SearchBar), typeof (SearchBarRenderer))]
-
-[assembly: ExportRenderer (typeof (TabbedPage), typeof (TabbedPageRenderer))]
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class SearchBarRenderer
- : ViewRenderer<SearchBar, SearchBox>
- {
- protected override void OnElementChanged (ElementChangedEventArgs<SearchBar> e)
- {
- if (e.NewElement != null) {
- if (Control == null) {
- SetNativeControl (new SearchBox ());
- Control.QuerySubmitted += OnQuerySubmitted;
- Control.QueryChanged += OnQueryChanged;
- Control.Loaded += (sender, args) => {
- _queryTextBox = Control.GetFirstDescendant<FormsTextBox> ();
- UpdateTextColor ();
- UpdatePlaceholderColor ();
- };
- }
-
- UpdateText ();
- UpdatePlaceholder ();
- UpdateFont ();
- UpdateAlignment ();
- UpdatePlaceholderColor ();
- UpdateTextColor ();
- }
-
- base.OnElementChanged (e);
- }
-
- protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged (sender, e);
-
- if (e.PropertyName == SearchBar.TextProperty.PropertyName)
- UpdateText ();
- else if (e.PropertyName == SearchBar.PlaceholderProperty.PropertyName)
- UpdatePlaceholder ();
- else if (e.PropertyName == SearchBar.FontAttributesProperty.PropertyName)
- UpdateFont ();
- else if (e.PropertyName == SearchBar.FontFamilyProperty.PropertyName)
- UpdateFont ();
- else if (e.PropertyName == SearchBar.FontSizeProperty.PropertyName)
- UpdateFont ();
- else if (e.PropertyName == SearchBar.HorizontalTextAlignmentProperty.PropertyName)
- UpdateAlignment ();
- else if (e.PropertyName == SearchBar.PlaceholderColorProperty.PropertyName)
- UpdatePlaceholderColor ();
- else if (e.PropertyName == SearchBar.TextColorProperty.PropertyName)
- UpdateTextColor ();
- }
-
- bool _fontApplied;
-
- void OnQuerySubmitted (SearchBox sender, SearchBoxQuerySubmittedEventArgs e)
- {
- Element.OnSearchButtonPressed ();
- }
-
- void UpdatePlaceholder ()
- {
- Control.PlaceholderText = Element.Placeholder ?? string.Empty;
- }
-
- void UpdateFont ()
- {
- if (Control == null)
- return;
-
- var searchBar = Element;
-
- if (searchBar == null)
- return;
-
- bool searchBarIsDefault = searchBar.FontFamily == null && searchBar.FontSize == Device.GetNamedSize (NamedSize.Default, typeof (SearchBar), true) && searchBar.FontAttributes == FontAttributes.None;
-
- if (searchBarIsDefault && !_fontApplied)
- return;
-
- if (searchBarIsDefault) {
- Control.ClearValue (Windows.UI.Xaml.Controls.Control.FontStyleProperty);
- Control.ClearValue (Windows.UI.Xaml.Controls.Control.FontSizeProperty);
- Control.ClearValue (Windows.UI.Xaml.Controls.Control.FontFamilyProperty);
- Control.ClearValue (Windows.UI.Xaml.Controls.Control.FontWeightProperty);
- Control.ClearValue (Windows.UI.Xaml.Controls.Control.FontStretchProperty);
- } else {
- Control.ApplyFont (searchBar);
- }
-
- _fontApplied = true;
- }
-
- void OnQueryChanged (SearchBox sender, SearchBoxQueryChangedEventArgs e)
- {
- ((IElementController) Element).SetValueFromRenderer (SearchBar.TextProperty, e.QueryText);
- }
-
- void UpdateText ()
- {
- Control.QueryText = Element.Text ?? string.Empty;
- }
-
- void UpdateAlignment ()
- {
- Control.HorizontalTextAlignment = Element.HorizontalTextAlignment;
- }
-
- void UpdateTextColor ()
- {
- if (_queryTextBox == null) {
- return;
- }
-
- var textColor = Element.TextColor;
-
- if (textColor.IsDefault)
- {
- if (_defaultTextColorBrush == null) {
- return;
- }
-
- _queryTextBox.Foreground = _defaultTextColorBrush;
- }
-
- _defaultTextColorBrush = _defaultTextColorBrush ?? _queryTextBox.Foreground;
-
- _queryTextBox.Foreground = textColor.ToBrush();
- }
-
- void UpdatePlaceholderColor ()
- {
- if (_queryTextBox == null) {
- return;
- }
-
- var placeholderColor = Element.PlaceholderColor;
-
- if (placeholderColor.IsDefault) {
- if (_defaultPlaceholderColorBrush == null) {
- return;
- }
-
- _queryTextBox.PlaceholderForegroundBrush = _defaultPlaceholderColorBrush;
- }
-
- _defaultPlaceholderColorBrush = _defaultPlaceholderColorBrush ?? _queryTextBox.PlaceholderForegroundBrush;
-
- _queryTextBox.PlaceholderForegroundBrush = placeholderColor.ToBrush ();
- }
-
- FormsTextBox _queryTextBox;
- Brush _defaultTextColorBrush;
- Brush _defaultPlaceholderColorBrush;
- }
-}
+++ /dev/null
-<Control
- x:Class="Xamarin.Forms.Platform.WinRT.SearchBox"
- 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:winRt="using:Xamarin.Forms.Platform.WinRT"
- mc:Ignorable="d"
- d:DesignHeight="300"
- d:DesignWidth="400">
-
- <Control.Resources>
- <ResourceDictionary>
- <ResourceDictionary.ThemeDictionaries>
- <ResourceDictionary x:Key="Default">
- <SolidColorBrush x:Key="SearchBoxBackgroundThemeBrush" Color="#CCFFFFFF" />
- <SolidColorBrush x:Key="SearchBoxBorderThemeBrush" Color="#FF2A2A2A" />
- <SolidColorBrush x:Key="SearchBoxDisabledBackgroundThemeBrush" Color="Transparent" />
- <SolidColorBrush x:Key="SearchBoxDisabledTextThemeBrush" Color="#66FFFFFF" />
- <SolidColorBrush x:Key="SearchBoxDisabledBorderThemeBrush" Color="#FF666666" />
- <SolidColorBrush x:Key="SearchBoxPointerOverBackgroundThemeBrush" Color="#DDFFFFFF" />
- <SolidColorBrush x:Key="SearchBoxPointerOverTextThemeBrush" Color="#99000000" />
- <SolidColorBrush x:Key="SearchBoxPointerOverBorderThemeBrush" Color="#FFDDDDDD" />
- <SolidColorBrush x:Key="SearchBoxFocusedBackgroundThemeBrush" Color="#FFFFFFFF" />
- <SolidColorBrush x:Key="SearchBoxFocusedTextThemeBrush" Color="#FF000000" />
- <SolidColorBrush x:Key="SearchBoxFocusedBorderThemeBrush" Color="#FF2A2A2A" />
- <SolidColorBrush x:Key="SearchBoxButtonBackgroundThemeBrush" Color="#FF4617B4" />
- <SolidColorBrush x:Key="SearchBoxButtonForegroundThemeBrush" Color="White" />
- <SolidColorBrush x:Key="SearchBoxButtonPointerOverForegroundThemeBrush" Color="White" />
- <SolidColorBrush x:Key="SearchBoxButtonPointerOverBackgroundThemeBrush" Color="#FF5F37BE" />
- <SolidColorBrush x:Key="SearchBoxSeparatorSuggestionForegroundThemeBrush" Color="Black" />
- <SolidColorBrush x:Key="SearchBoxHitHighlightForegroundThemeBrush" Color="#FF4617B4" />
- <SolidColorBrush x:Key="SearchBoxHitHighlightSelectedForegroundThemeBrush" Color="#FFA38BDA" />
- <SolidColorBrush x:Key="SearchBoxForegroundThemeBrush" Color="Black" />
- </ResourceDictionary>
- </ResourceDictionary.ThemeDictionaries>
-
- <x:Double x:Key="SearchBoxTextBoxThemeMinHeight">28</x:Double>
- <x:Double x:Key="SearchBoxContentThemeFontSize">15</x:Double>
- <Thickness x:Key="SearchBoxThemePadding">8,4,8,4</Thickness>
- <Thickness x:Key="SearchBoxBorderThemeThickness">2</Thickness>
- <FontWeight x:Key="SearchBoxButtonThemeFontWeight">Normal</FontWeight>
- <FontWeight x:Key="SearchBoxContentThemeFontWeight">Normal</FontWeight>
- <winRt:TextAlignmentToHorizontalAlignmentConverter x:Key="AlignmentConverter" />
- </ResourceDictionary>
- </Control.Resources>
-
- <Control.Style>
- <Style TargetType="Control">
- <Setter Property="Background" Value="{ThemeResource SearchBoxBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource SearchBoxBorderThemeBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource SearchBoxBorderThemeThickness}"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontSize" Value="{ThemeResource SearchBoxContentThemeFontSize}"/>
- <Setter Property="FontWeight" Value="{ThemeResource SearchBoxContentThemeFontWeight}"/>
- <Setter Property="Foreground" Value="{ThemeResource SearchBoxForegroundThemeBrush}"/>
- <Setter Property="Padding" Value="{ThemeResource SearchBoxThemePadding}"/>
- <Setter Property="IsTabStop" Value="False"/>
- <Setter Property="Typography.StylisticSet20" Value="True"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate>
- <Grid x:Name="SearchBoxGrid">
- <Grid.Resources>
- <Style x:Key="SearchButtonStyle" TargetType="Button">
- <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
- <Setter Property="IsTabStop" Value="False"/>
- <Setter Property="VerticalAlignment" Value="Stretch"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- </VisualStateGroup>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Focused"/>
- <VisualState x:Name="Unfocused"/>
- <VisualState x:Name="PointerFocused"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="SearchButtonBackground" Background="{TemplateBinding Background}">
- <SymbolIcon x:Name="SearchGlyph" Symbol="Find" AutomationProperties.AccessibilityView="Raw" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
- </Grid>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="SearchTextBoxStyle" TargetType="winRt:FormsTextBox">
- <Setter Property="Margin" Value="0" />
- <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
- <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
- <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
- <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
- <Setter Property="PlaceholderForegroundBrush" Value="{ThemeResource TextBoxPlaceholderTextThemeBrush}"/>
- <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
- <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
- <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="winRt:FormsTextBox">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BackgroundElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement"/>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement"/>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused"/>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ButtonStates"/>
- </VisualStateManager.VisualStateGroups>
-
- <Border x:Name="BackgroundElement" Background="{TemplateBinding Background}" Margin="{TemplateBinding BorderThickness}" />
- <Border x:Name="BorderElement" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" />
- <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled"/>
- <ContentControl x:Name="PlaceholderTextContentPresenter" Content="{TemplateBinding PlaceholderText}" Foreground="{TemplateBinding PlaceholderForegroundBrush}" IsHitTestVisible="False" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"
- HorizontalAlignment="{Binding TextAlignment,
- RelativeSource={RelativeSource Mode=TemplatedParent},
- Converter={StaticResource AlignmentConverter}}" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Grid.Resources>
-
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding Background, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding BorderBrush, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding Foreground, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchTextBox">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
-
- <Border x:Name="SearchBoxBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- <ColumnDefinition Width="Auto"/>
- </Grid.ColumnDefinitions>
-
- <winRt:FormsTextBox x:Name="SearchTextBox" BorderThickness="0" Background="Transparent" Text="{Binding Path=QueryText, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" FontStyle="{TemplateBinding FontStyle}" InputScope="Search" MinHeight="{ThemeResource SearchBoxTextBoxThemeMinHeight}" MaxLength="2048" Padding="{TemplateBinding Padding}" Style="{StaticResource SearchTextBoxStyle}" TextWrapping="NoWrap" VerticalAlignment="Stretch"/>
- <Button x:Name="SearchButton" AutomationProperties.AccessibilityView="Raw" Background="Transparent" Grid.Column="1" FontWeight="{ThemeResource SearchBoxButtonThemeFontWeight}" Style="{StaticResource SearchButtonStyle}"/>
- </Grid>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Control.Style>
-</Control>
\ No newline at end of file
+++ /dev/null
-using System;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class SearchBoxQuerySubmittedEventArgs
- : EventArgs
- {
- }
-
- public class SearchBoxQueryChangedEventArgs
- : EventArgs
- {
- public SearchBoxQueryChangedEventArgs (string query)
- {
- QueryText = query;
- }
-
- public string QueryText
- {
- get;
- private set;
- }
- }
-
- public delegate void QueryChangedEventHandler (SearchBox search, SearchBoxQueryChangedEventArgs args);
- public delegate void QuerySubmittedEventHandler (SearchBox search, SearchBoxQuerySubmittedEventArgs args);
-
- public sealed partial class SearchBox
- {
- public SearchBox ()
- {
- InitializeComponent ();
-
- IsEnabledChanged += OnIsEnabledChanged;
- }
-
- public event QuerySubmittedEventHandler QuerySubmitted;
- public event QueryChangedEventHandler QueryChanged;
-
- public static readonly DependencyProperty QueryTextProperty = DependencyProperty.Register (
- "QueryText", typeof(string), typeof(SearchBox), new PropertyMetadata (null, OnQueryTextChanged));
-
- public string QueryText
- {
- get { return (string)GetValue (QueryTextProperty); }
- set { SetValue (QueryTextProperty, value); }
- }
-
- public static readonly DependencyProperty PlaceholderTextProperty = DependencyProperty.Register (
- "PlaceholderText", typeof(string), typeof(SearchBox), new PropertyMetadata (null, OnPlaceholderChanged));
-
- public string PlaceholderText
- {
- get { return (string)GetValue (PlaceholderTextProperty); }
- set { SetValue (PlaceholderTextProperty, value); }
- }
-
- public static readonly DependencyProperty HorizontalTextAlignmentProperty = DependencyProperty.Register (
- "HorizontalTextAlignment", typeof(string), typeof(SearchBox), new PropertyMetadata (null, OnAlignmentChanged));
-
- public TextAlignment HorizontalTextAlignment
- {
- get { return (TextAlignment)GetValue (HorizontalTextAlignmentProperty); }
- set { SetValue (HorizontalTextAlignmentProperty, value); }
- }
-
- protected override void OnApplyTemplate ()
- {
- base.OnApplyTemplate ();
-
- GoToNormal ();
-
- _searchTextBox = (TextBox)GetTemplateChild ("SearchTextBox");
-
- ((Windows.UI.Xaml.Controls.Button) GetTemplateChild ("SearchButton")).Click += OnSearchButtonClicked;
-
- UpdatePlaceholder ();
- UpdateAlignment ();
- }
-
- protected override void OnGotFocus (RoutedEventArgs e)
- {
- base.OnGotFocus (e);
-
- VisualStateManager.GoToState (this, "Focused", true);
- }
-
- protected override void OnLostFocus (RoutedEventArgs e)
- {
- base.OnLostFocus (e);
-
- GoToNormal ();
- }
-
- void OnSearchButtonClicked (object sender, RoutedEventArgs e)
- {
- var querySubmitted = QuerySubmitted;
- if (querySubmitted != null)
- querySubmitted (this, new SearchBoxQuerySubmittedEventArgs());
- }
-
- TextBox _searchTextBox;
-
- void GoToNormal ()
- {
- VisualStateManager.GoToState (this, (IsEnabled) ? "Normal" : "Disabled", false);
- }
-
- void UpdatePlaceholder ()
- {
- if (_searchTextBox == null)
- return;
-
- _searchTextBox.PlaceholderText = PlaceholderText;
- }
-
- void OnIsEnabledChanged (object sender, DependencyPropertyChangedEventArgs e)
- {
- string state = "Normal";
- if (!(bool) e.NewValue)
- state = "Disabled";
- else if (FocusState != FocusState.Unfocused)
- state = "Focused";
-
- VisualStateManager.GoToState (this, state, true);
- }
-
- static void OnQueryTextChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- var search = (SearchBox) d;
- var changed = search.QueryChanged;
- if (changed != null)
- changed (search, new SearchBoxQueryChangedEventArgs ((string) e.NewValue));
- }
-
- static void OnPlaceholderChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- ((SearchBox) d).UpdatePlaceholder ();
- }
-
- static void OnAlignmentChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- ((SearchBox) d).UpdateAlignment ();
- }
-
- void UpdateAlignment ()
- {
- if (_searchTextBox == null) {
- return;
- }
-
- _searchTextBox.TextAlignment = HorizontalTextAlignment.ToNativeTextAlignment();
- }
- }
-}
+++ /dev/null
-using System;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Automation;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Xamarin.Forms.Internals;
-using WGrid = Windows.UI.Xaml.Controls.Grid;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- internal class TabbedPagePresenter : Windows.UI.Xaml.Controls.ContentPresenter
- {
- public TabbedPagePresenter()
- {
- SizeChanged += (s, e) =>
- {
- if (ActualWidth > 0 && ActualHeight > 0)
- {
- var tab = ((Page)DataContext);
- ((Page)tab.RealParent).ContainerArea = new Rectangle(0, 0, ActualWidth, ActualHeight);
- }
- };
- }
- }
-
- public class TabbedPageRenderer
- : IVisualElementRenderer, ITitleProvider
- {
- const string TabBarHeaderTextBlockName = "TabbedPageHeaderTextBlock";
- const string TabBarHeaderGridName = "TabbedPageHeaderGrid";
-
- Color _barBackgroundColor;
- Color _barTextColor;
- bool _disposed;
- VisualElementTracker<Page, Pivot> _tracker;
- bool _showTitle;
-
- ITitleProvider TitleProvider => this;
-
- public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- public FrameworkElement ContainerElement
- {
- get { return Control; }
- }
-
- VisualElement IVisualElementRenderer.Element
- {
- get { return Element; }
- }
-
- public FormsPivot Control
- {
- get;
- private set;
- }
-
- public TabbedPage Element
- {
- get;
- private set;
- }
-
- public void SetElement(VisualElement element)
- {
- if (element != null && !(element is TabbedPage))
- throw new ArgumentException("Element must be a TabbedPage", "element");
-
- TabbedPage oldElement = Element;
- Element = (TabbedPage)element;
-
- if (oldElement != null)
- {
- oldElement.PropertyChanged -= OnElementPropertyChanged;
- ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged;
- }
-
- if (element != null)
- {
- if (Control == null)
- {
- Control = new FormsPivot
- {
- Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TabbedPageStyle"],
- ItemTemplate = (Windows.UI.Xaml.DataTemplate)Windows.UI.Xaml.Application.Current.Resources["TabbedPage"]
- };
-
- Control.SelectionChanged += OnSelectionChanged;
-
- Tracker = new BackgroundTracker<Pivot>(Windows.UI.Xaml.Controls.Control.BackgroundProperty)
- {
- Element = (Page)element,
- Control = Control,
- Container = Control
- };
-
- Control.Loaded += OnLoaded;
- Control.Unloaded += OnUnloaded;
- }
-
- Control.DataContext = Element;
- OnPagesChanged(Element.Children, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
-
- UpdateCurrentPage();
-
- ((INotifyCollectionChanged)Element.Children).CollectionChanged += OnPagesChanged;
- element.PropertyChanged += OnElementPropertyChanged;
-
- if (!string.IsNullOrEmpty(element.AutomationId))
- Control.SetValue(Windows.UI.Xaml.Automation.AutomationProperties.AutomationIdProperty, element.AutomationId);
- }
-
- OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
- }
-
- public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- var constraint = new Windows.Foundation.Size(widthConstraint, heightConstraint);
-
- var oldWidth = Control.Width;
- var oldHeight = Control.Height;
-
- Control.Height = double.NaN;
- Control.Width = double.NaN;
-
- Control.Measure(constraint);
- var result = new Size(Math.Ceiling(Control.DesiredSize.Width), Math.Ceiling(Control.DesiredSize.Height));
-
- Control.Width = oldWidth;
- Control.Height = oldHeight;
-
- return new SizeRequest(result);
- }
-
- UIElement IVisualElementRenderer.GetNativeElement()
- {
- return null;
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing || _disposed)
- return;
-
- _disposed = true;
-
- Element?.SendDisappearing();
- SetElement(null);
- Tracker = null;
- }
-
- protected VisualElementTracker<Page, Pivot> Tracker
- {
- get
- {
- return _tracker;
- }
- set
- {
- if (_tracker == value)
- return;
-
- if (_tracker != null)
- {
- _tracker.Dispose();
- /*this.tracker.Updated -= OnTrackerUpdated;*/
- }
-
- _tracker = value;
-
- /*if (this.tracker != null)
- this.tracker.Updated += OnTrackerUpdated;*/
- }
- }
-
- bool ITitleProvider.ShowTitle
- {
- get
- {
- return _showTitle;
- }
-
- set
- {
- if (_showTitle == value)
- return;
- _showTitle = value;
-
- Control.TitleVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed;
- }
- }
-
- string ITitleProvider.Title
- {
- get
- {
- return (string)Control?.Title;
- }
-
- set
- {
- if (Control != null)
- Control.Title = value;
- }
- }
-
- Brush ITitleProvider.BarBackgroundBrush
- {
- set
- {
- Control.ToolbarBackground = value;
- }
- }
-
- Brush ITitleProvider.BarForegroundBrush
- {
- set
- {
- Control.ToolbarForeground = value;
- }
- }
-
- protected virtual void OnElementChanged(VisualElementChangedEventArgs e)
- {
- var changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- e.Apply(Element.Children, Control.Items);
-
- // Potential performance issue, UpdateLayout () is called for every page change
- Control.UpdateLayout();
- }
-
- void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (Element == null)
- return;
-
- Page page = (e.AddedItems.Count > 0) ? (Page)e.AddedItems[0] : null;
- Element.CurrentPage = page;
- }
-
- void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == nameof(TabbedPage.CurrentPage))
- {
- UpdateCurrentPage();
- UpdateBarTextColor();
- UpdateBarBackgroundColor();
- }
- else if (e.PropertyName == TabbedPage.BarTextColorProperty.PropertyName)
- UpdateBarTextColor();
- else if (e.PropertyName == TabbedPage.BarBackgroundColorProperty.PropertyName)
- UpdateBarBackgroundColor();
- }
-
- void UpdateCurrentPage()
- {
- Page page = Element.CurrentPage;
- UpdateTitle(page);
-
- if (page == null)
- return;
- Control.SelectedItem = page;
- }
-
- void OnLoaded(object sender, RoutedEventArgs args)
- {
- Element?.SendAppearing();
- UpdateBarTextColor();
- UpdateBarBackgroundColor();
- }
-
- void OnUnloaded(object sender, RoutedEventArgs args)
- {
- Element?.SendDisappearing();
- }
-
- void OnTrackerUpdated(object sender, EventArgs e)
- {
-
- }
-
- Brush GetBarBackgroundBrush()
- {
- object defaultColor = Windows.UI.Xaml.Application.Current.Resources["AppBarBackgroundThemeBrush"];
- if (Element.BarBackgroundColor.IsDefault && defaultColor != null)
- return (Brush)defaultColor;
- return Element.BarBackgroundColor.ToBrush();
- }
-
- Brush GetBarForegroundBrush()
- {
- object defaultColor = Windows.UI.Xaml.Application.Current.Resources["AppBarItemForegroundThemeBrush"];
- if (Element.BarTextColor.IsDefault && defaultColor != null)
- return (Brush)defaultColor;
- return Element.BarTextColor.ToBrush();
- }
-
- void UpdateBarBackgroundColor()
- {
- if (Element == null) return;
- var barBackgroundColor = Element.BarBackgroundColor;
-
- if (barBackgroundColor == _barBackgroundColor) return;
- _barBackgroundColor = barBackgroundColor;
-
- var controlToolbarBackground = Control.ToolbarBackground;
- if (controlToolbarBackground == null && barBackgroundColor.IsDefault) return;
-
- var brush = GetBarBackgroundBrush();
- if (brush == controlToolbarBackground) return;
-
- TitleProvider.BarBackgroundBrush = brush;
-
- foreach (WGrid tabBarGrid in Control.GetDescendantsByName<WGrid>(TabBarHeaderGridName))
- {
- tabBarGrid.Background = brush;
- }
- }
-
- void UpdateBarTextColor()
- {
- if (Element == null) return;
- var barTextColor = Element.BarTextColor;
-
- if (barTextColor == _barTextColor) return;
- _barTextColor = barTextColor;
-
- var controlToolbarForeground = Control.ToolbarForeground;
- if (controlToolbarForeground == null && barTextColor.IsDefault) return;
-
- var brush = GetBarForegroundBrush();
- if (brush == controlToolbarForeground) return;
-
- TitleProvider.BarForegroundBrush = brush;
-
- foreach (TextBlock tabBarTextBlock in Control.GetDescendantsByName<TextBlock>(TabBarHeaderTextBlockName))
- {
- tabBarTextBlock.Foreground = brush;
- }
- }
-
- void UpdateTitle(Page child)
- {
- Control.ClearValue(Pivot.TitleProperty);
-
- if (child == null)
- return;
- var renderer = Platform.GetRenderer(child);
- var navigationRenderer = renderer as NavigationPageRenderer;
- if (navigationRenderer != null)
- {
- Control.Title = navigationRenderer.Title;
- }
- else
- {
- TitleProvider.ShowTitle = false;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using Windows.ApplicationModel;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public abstract class WindowsPhonePage
- : WindowsBasePage
- {
- protected override Platform CreatePlatform ()
- {
- return new WindowsPhonePlatform (this);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System.Threading.Tasks;
-using Windows.UI.ViewManagement;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- internal sealed class WindowsPhonePlatform
- : Platform
- {
- public WindowsPhonePlatform (Windows.UI.Xaml.Controls.Page page)
- : base (page)
- {
- _status = StatusBar.GetForCurrentView ();
- _status.Showing += OnStatusBarShowing;
- _status.Hiding += OnStatusBarHiding;
- }
-
- readonly StatusBar _status;
-
- void OnStatusBarHiding (StatusBar sender, object args)
- {
- UpdatePageSizes ();
- }
-
- void OnStatusBarShowing (StatusBar sender, object args)
- {
- UpdatePageSizes ();
- }
- }
-}
+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-using Windows.ApplicationModel;
-using Windows.Storage;
-using Windows.UI.Core;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- internal class WindowsPhonePlatformServices
- : WindowsBasePlatformServices
- {
- public WindowsPhonePlatformServices (CoreDispatcher dispatcher)
- : base (dispatcher)
- {
- }
-
- public override Assembly[] GetAssemblies()
- {
- var files = Package.Current.InstalledLocation.GetFilesAsync().AsTask().Result;
-
- List<Assembly> assemblies = new List<Assembly> (files.Count);
- for (int i = 0; i < files.Count; i++) {
- StorageFile file = files[i];
- if (file.Name.Length < 3)
- continue;
-
- string extension = file.Name.Substring (file.Name.Length - 3, 3).ToLower();
- if (extension != "dll" && extension != "exe")
- continue;
-
- try {
- Assembly assembly = Assembly.Load (new AssemblyName { Name = Path.GetFileNameWithoutExtension (file.Name) });
- assemblies.Add (assembly);
- } catch (IOException) {
- } catch (BadImageFormatException) {
- }
- }
-
- return assemblies.ToArray();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Windows.UI.Text;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Xamarin.Forms.Internals;
-using WStyle = Windows.UI.Xaml.Style;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- internal sealed class WindowsPhoneResourcesProvider
- : ISystemResourcesProvider
- {
- public IResourceDictionary GetSystemResources()
- {
- var prototype = new TextBlock();
-
- return new ResourceDictionary
- {
- [Device.Styles.TitleStyleKey] = GetStyle("HeaderTextBlockStyle", prototype),
- [Device.Styles.SubtitleStyleKey] = GetStyle("SubheaderTextBlockStyle", prototype),
- [Device.Styles.BodyStyleKey] = GetStyle("BodyTextBlockStyle", prototype),
- [Device.Styles.CaptionStyleKey] = GetStyle("BodyTextBlockStyle", prototype),
- [Device.Styles.ListItemTextStyleKey] = GetStyle("ListViewItemTextBlockStyle", prototype),
- [Device.Styles.ListItemDetailTextStyleKey] = GetStyle("ListViewItemContentTextBlockStyle", prototype)
- };
- }
-
- static Style GetStyle(object nativeKey, TextBlock prototype)
- {
- var style = (WStyle)Windows.UI.Xaml.Application.Current.Resources[nativeKey];
-
- prototype.Style = style;
-
- var formsStyle = new Style(typeof(Label));
-
- formsStyle.Setters.Add(Label.FontSizeProperty, prototype.FontSize);
- formsStyle.Setters.Add(Label.FontFamilyProperty, prototype.FontFamily.Source);
- formsStyle.Setters.Add(Label.FontAttributesProperty, ToAttributes(prototype.FontWeight));
- formsStyle.Setters.Add(Label.LineBreakModeProperty, ToLineBreakMode(prototype.TextWrapping));
-
- return formsStyle;
- }
-
- static FontAttributes ToAttributes(FontWeight fontWeight)
- {
- if (fontWeight.Weight == FontWeights.Bold.Weight || fontWeight.Weight == FontWeights.SemiBold.Weight
- || fontWeight.Weight == FontWeights.ExtraBold.Weight)
- {
- return FontAttributes.Bold;
- }
-
- return FontAttributes.None;
- }
-
- static LineBreakMode ToLineBreakMode(TextWrapping value)
- {
- switch (value)
- {
- case TextWrapping.Wrap:
- return LineBreakMode.CharacterWrap;
- case TextWrapping.WrapWholeWords:
- return LineBreakMode.WordWrap;
- default:
- case TextWrapping.NoWrap:
- return LineBreakMode.NoWrap;
- }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{3361D52C-2E74-433E-8285-9C9A5C485977}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Platform.WinRT</RootNamespace>
- <AssemblyName>Xamarin.Forms.Platform.WinRT.Phone</AssemblyName>
- <DefaultLanguage>en-US</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' ">
- <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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </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>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
- <Link>Properties\GlobalAssemblyInfo.cs</Link>
- </Compile>
- <Compile Include="Forms.cs" />
- <Compile Include="FormsPivot.cs" />
- <Compile Include="SearchBarRenderer.cs" />
- <Compile Include="TabbedPageRenderer.cs" />
- <Compile Include="WindowsPhonePlatform.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="SearchBox.xaml.cs">
- <DependentUpon>SearchBox.xaml</DependentUpon>
- </Compile>
- <Compile Include="WindowsPhonePage.cs" />
- <Compile Include="WindowsPhonePlatformServices.cs" />
- <Compile Include="WindowsPhoneResourcesProvider.cs" />
- </ItemGroup>
- <ItemGroup>
- <Page Include="..\Xamarin.Forms.Platform.WinRT\Resources.xaml">
- <Link>Resources.xaml</Link>
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- <Page Include="FormsProgressBarStyle.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- <Page Include="FormsTextBoxStyle.xaml">
- <SubType>Designer</SubType>
- <Generator>MSBuild:Compile</Generator>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Page>
- <Page Include="PhoneResources.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Page>
- <Page Include="SearchBox.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '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
+++ /dev/null
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Data;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- // This exists to work around the fact that when you set these bindings in XAML and compile on Win10
- // the resulting xbf file does not load correctly on Win8.1. MS has acknowledged the issue but has no fixed it.
- // This hacks around the problem.
- public class FormsListViewItemPresenter : ListViewItemPresenter
- {
- public FormsListViewItemPresenter()
- {
- var verticalContentAlignBinding = new Windows.UI.Xaml.Data.Binding
- {
- Path = new PropertyPath("VerticalContentAlignment"),
- RelativeSource = new RelativeSource { Mode = RelativeSourceMode.TemplatedParent }
- };
- BindingOperations.SetBinding(this, VerticalContentAlignmentProperty, verticalContentAlignBinding);
-
- var paddingBinding = new Windows.UI.Xaml.Data.Binding
- {
- Path = new PropertyPath("Padding"),
- RelativeSource = new RelativeSource { Mode = RelativeSourceMode.TemplatedParent }
- };
- BindingOperations.SetBinding(this, PaddingProperty, paddingBinding);
-
- var contentTransitionBinding = new Windows.UI.Xaml.Data.Binding
- {
- Path = new PropertyPath("ContentTransitions"),
- RelativeSource = new RelativeSource { Mode = RelativeSourceMode.TemplatedParent }
- };
- BindingOperations.SetBinding(this, ContentTransitionsProperty, contentTransitionBinding);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:winRt="using:Xamarin.Forms.Platform.WinRT">
-
- <!-- Default style for Windows.UI.Xaml.Controls.ProgressBar -->
- <Style x:Key="FormsProgressBarStyle" TargetType="winRt:FormsProgressBar">
- <Setter Property="Foreground" Value="{ThemeResource ProgressBarForegroundThemeBrush}" />
- <Setter Property="Background" Value="{ThemeResource ProgressBarBackgroundThemeBrush}" />
- <Setter Property="BorderBrush" Value="{ThemeResource ProgressBarBorderThemeBrush}" />
- <Setter Property="BorderThickness" Value="{ThemeResource ProgressBarBorderThemeThickness}" />
- <Setter Property="Maximum" Value="100" />
- <Setter Property="MinHeight" Value="{ThemeResource ProgressBarThemeMinHeight}" />
- <Setter Property="IsTabStop" Value="False" />
- <Setter Property="VerticalAlignment" Value="Center" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ProgressBar">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualStateGroup.Transitions>
- <VisualTransition From="Updating" To="Determinate">
- <Storyboard>
- <RepositionThemeAnimation TargetName="ProgressBarIndicator" FromHorizontalOffset="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.IndicatorLengthDelta}" />
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Paused" To="Determinate">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator"
- Storyboard.TargetProperty="Opacity"
- To="1"
- Duration="0:0:0.25" />
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Indeterminate">
- <Storyboard>
- <FadeInThemeAnimation TargetName="EllipseGrid" />
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Determinate" />
- <VisualState x:Name="Updating" />
- <VisualState x:Name="Indeterminate">
- <Storyboard RepeatBehavior="Forever">
- <DoubleAnimation Storyboard.TargetName="EllipseGrid"
- Duration="0:0:3.917"
- Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
- From="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationStartPosition}"
- To="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationEndPosition}" />
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E1">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E2">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E3">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E4">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E5">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <SplineDoubleKeyFrame KeyTime="0:0:1.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" />
- <SplineDoubleKeyFrame KeyTime="0:0:3.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B1">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B2">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B3">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.833" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B4">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B5">
- <EasingDoubleKeyFrame KeyTime="0" Value="-50" />
- <EasingDoubleKeyFrame KeyTime="0:0:1.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="100" />
- </DoubleAnimationUsingKeyFrames>
- <!-- The ElementOpacity on FormsProgressBar is used in place of Opacity so that the user may specify
- a particular value they might wish to use, and also prevents unintended interactions between
- Element.Opacity and Control.Opacity. -->
- <DoubleAnimation Storyboard.TargetName="EllipseGrid"
- Storyboard.TargetProperty="Opacity"
- To="{Binding ElementOpacity, RelativeSource={RelativeSource TemplatedParent}}"
- Duration="0" />
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E1"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E2"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E3"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E4"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="E5"
- Storyboard.TargetProperty="Fill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ProgressBarIndeterminateForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <!-- Both FadeOutThemeAnimation and a DoubleAnimation on Opacity are necessary
- here. The FadeOutThemeAnimation is necessary in the Indeterminate state so
- that we can do a FadeInThemeAnimation when transitioning back to the
- Determinate state. The DoubleAnimation on Opacity is necessary to hide the
- DeterminateRoot immediately so that it does not slowly fade out during each
- iteration of the Indeterminate state animation. -->
- <FadeOutThemeAnimation TargetName="DeterminateRoot" />
- <DoubleAnimation Storyboard.TargetName="DeterminateRoot"
- Storyboard.TargetProperty="Opacity"
- To="0"
- Duration="0" />
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E1">
- <EasingDoubleKeyFrame KeyTime="0" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E2">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E3">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E4">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E5">
- <EasingDoubleKeyFrame KeyTime="0" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" />
- <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="1" />
- <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="0" />
- </DoubleAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Error">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ProgressBarIndicator">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Paused">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator"
- Storyboard.TargetProperty="Opacity"
- To="0.5"
- Duration="0:0:0.25" />
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="EllipseGrid"
- Opacity="0">
- <Grid.RenderTransform>
- <TranslateTransform />
- </Grid.RenderTransform>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <Border x:Name="B1"
- Grid.Column="8"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E1"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="7"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B2"
- Grid.Column="6"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E2"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="5"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B3"
- Grid.Column="4"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E3"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="3"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B4"
- Grid.Column="2"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E4"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- <Rectangle Grid.Column="1"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" />
- <Border x:Name="B5"
- Grid.Column="0"
- RenderTransformOrigin="0.5,0.5">
- <Border.RenderTransform>
- <TranslateTransform />
- </Border.RenderTransform>
- <Ellipse x:Name="E5"
- Fill="{TemplateBinding Foreground}"
- Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}"
- RenderTransformOrigin="0.5,0.5">
- <Ellipse.RenderTransform>
- <TranslateTransform />
- </Ellipse.RenderTransform>
- </Ellipse>
- </Border>
- </Grid>
- <Border x:Name="DeterminateRoot"
- Background="{TemplateBinding Background}"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}">
- <Rectangle x:Name="ProgressBarIndicator"
- Margin="{TemplateBinding Padding}"
- Fill="{TemplateBinding Foreground}"
- HorizontalAlignment="Left" />
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
+++ /dev/null
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class FormsSearchBox : SearchBox
- {
- public static readonly DependencyProperty HorizontalTextAlignmentProperty = DependencyProperty.Register(
- "HorizontalTextAlignment", typeof (Windows.UI.Xaml.TextAlignment), typeof (FormsSearchBox),
- new PropertyMetadata(Windows.UI.Xaml.TextAlignment.Left));
-
- public Windows.UI.Xaml.TextAlignment HorizontalTextAlignment
- {
- get { return (Windows.UI.Xaml.TextAlignment)GetValue(HorizontalTextAlignmentProperty); }
- set { SetValue(HorizontalTextAlignmentProperty, value); }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:winRt="using:Xamarin.Forms.Platform.WinRT">
-
- <winRt:TextAlignmentToHorizontalAlignmentConverter x:Key="AlignmentConverter" />
- <Style TargetType="winRt:FormsTextBox" x:Key="FormsTextBoxStyle">
- <!-- This is adapted from the default styling for TextBox -->
-
- <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
- <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
- <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}" />
- <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}" />
- <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}" />
- <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}" />
- <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}" />
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
- <Setter Property="PlaceholderForegroundBrush" Value="{ThemeResource TextBoxPlaceholderTextThemeBrush}" />
- <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden" />
- <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
- <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" />
- <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="winRt:FormsTextBox">
- <Grid>
- <Grid.Resources>
- <Style x:Name="DeleteButtonStyle" TargetType="Button">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPointerOverBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="BorderBrush">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPointerOverBorderThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="GlyphElement"
- Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPointerOverForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPressedBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="BorderBrush">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPressedBorderThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="GlyphElement"
- Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxButtonPressedForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <DoubleAnimation
- Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Opacity"
- To="0"
- Duration="0" />
- <DoubleAnimation Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="Opacity"
- To="0"
- Duration="0" />
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="BorderElement"
- BorderBrush="{ThemeResource TextBoxButtonBorderThemeBrush}"
- BorderThickness="{TemplateBinding BorderThickness}" />
- <Border x:Name="BackgroundElement"
- Background="{ThemeResource TextBoxButtonBackgroundThemeBrush}"
- Margin="{TemplateBinding BorderThickness}">
- <TextBlock x:Name="GlyphElement"
- Foreground="{ThemeResource TextBoxButtonForegroundThemeBrush}"
- VerticalAlignment="Center"
- HorizontalAlignment="Center"
- FontStyle="Normal"
- Text=""
- FontFamily="{ThemeResource SymbolThemeFontFamily}"
- AutomationProperties.AccessibilityView="Raw" />
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Grid.Resources>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="BorderBrush">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledBorderThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement"
- Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement"
- Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames
- Storyboard.TargetName="PlaceholderTextContentPresenter"
- Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0"
- Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Opacity"
- Duration="0"
- To="{ThemeResource TextControlBackgroundThemeOpacity}" />
- <DoubleAnimation Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="Opacity"
- Duration="0"
- To="{ThemeResource TextControlBorderThemeOpacity}" />
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="BackgroundElement"
- Storyboard.TargetProperty="Opacity"
- Duration="0"
- To="{ThemeResource TextControlPointerOverBackgroundThemeOpacity}" />
- <DoubleAnimation Storyboard.TargetName="BorderElement"
- Storyboard.TargetProperty="Opacity"
- Duration="0"
- To="{ThemeResource TextControlPointerOverBorderThemeOpacity}" />
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused" />
- </VisualStateGroup>
- <VisualStateGroup x:Name="ButtonStates">
- <VisualState x:Name="ButtonVisible">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DeleteButton"
- Storyboard.TargetProperty="Visibility">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Visible</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="ButtonCollapsed" />
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="*" />
- </Grid.RowDefinitions>
- <Border x:Name="BackgroundElement"
- Grid.Row="1"
- Background="{TemplateBinding Background}"
- Margin="{TemplateBinding BorderThickness}"
- Grid.ColumnSpan="2"
- Grid.RowSpan="1" />
- <Border x:Name="BorderElement"
- Background="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}"
- Grid.Row="1"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Grid.ColumnSpan="2"
- Grid.RowSpan="1" />
- <ContentPresenter x:Name="HeaderContentPresenter"
- Grid.Row="0"
- Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}"
- Margin="0,4,0,4"
- Grid.ColumnSpan="2"
- Content="{TemplateBinding Header}"
- ContentTemplate="{TemplateBinding HeaderTemplate}"
- FontWeight="Semilight" />
- <ScrollViewer x:Name="ContentElement"
- Background="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}"
- Grid.Row="1"
- HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
- HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
- VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
- VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
- IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
- IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
- IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
- Margin="{TemplateBinding BorderThickness}"
- Padding="{TemplateBinding Padding}"
- IsTabStop="False"
- AutomationProperties.AccessibilityView="Raw"
- ZoomMode="Disabled" />
- <!-- Converting the TextAlignment set for the control's input text to a HorizontalAlignment
- so the PlaceholderText's alignment will match the input text -->
- <ContentControl x:Name="PlaceholderTextContentPresenter"
- Grid.Row="1"
- Foreground="{TemplateBinding PlaceholderForegroundBrush}"
- Margin="{TemplateBinding BorderThickness}"
- Padding="{TemplateBinding Padding}"
- IsTabStop="False"
- Grid.ColumnSpan="2"
- Content="{TemplateBinding PlaceholderText}"
- IsHitTestVisible="False"
- HorizontalAlignment="{Binding TextAlignment,
- RelativeSource={RelativeSource Mode=TemplatedParent},
- Converter={StaticResource AlignmentConverter}}" />
- <Button x:Name="DeleteButton"
- Grid.Row="1"
- Style="{StaticResource DeleteButtonStyle}"
- BorderThickness="{TemplateBinding BorderThickness}"
- IsTabStop="False"
- Grid.Column="1"
- Visibility="Collapsed"
- FontSize="{TemplateBinding FontSize}"
- VerticalAlignment="Stretch" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
\ No newline at end of file
+++ /dev/null
-using System.Reflection;
-using Xamarin.Forms;
-using Xamarin.Forms.Platform.WinRT;
-
-[assembly: AssemblyTitle("Xamarin.Forms.Platform.WinRT.Phone")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCulture("")]
-[assembly: Dependency(typeof (WindowsResourcesProvider))]
-[assembly: ExportRenderer(typeof (SearchBar), typeof (SearchBarRenderer))]
-[assembly: ExportRenderer(typeof (TabbedPage), typeof (TabbedPageRenderer))]
\ No newline at end of file
+++ /dev/null
-using System.ComponentModel;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class SearchBarRenderer
- : ViewRenderer<SearchBar, FormsSearchBox>
- {
- Brush _defaultPlaceholderColorBrush;
- Brush _defaultTextColorBrush;
-
- bool _fontApplied;
-
- FormsTextBox _queryTextBox;
-
- protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
- {
- if (e.NewElement != null)
- {
- if (Control == null)
- {
- SetNativeControl(new FormsSearchBox());
- Control.QuerySubmitted += OnQuerySubmitted;
- Control.QueryChanged += OnQueryChanged;
- Control.Loaded += (sender, args) =>
- {
- _queryTextBox = Control.GetFirstDescendant<FormsTextBox>();
- UpdateTextColor();
- UpdatePlaceholderColor();
- };
- }
-
- UpdateText();
- UpdatePlaceholder();
- UpdateFont();
- UpdateAlignment();
- UpdatePlaceholderColor();
- UpdateTextColor();
- }
-
- base.OnElementChanged(e);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnElementPropertyChanged(sender, e);
-
- if (e.PropertyName == SearchBar.TextProperty.PropertyName)
- UpdateText();
- else if (e.PropertyName == SearchBar.PlaceholderProperty.PropertyName)
- UpdatePlaceholder();
- else if (e.PropertyName == SearchBar.FontAttributesProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.FontFamilyProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.FontSizeProperty.PropertyName)
- UpdateFont();
- else if (e.PropertyName == SearchBar.HorizontalTextAlignmentProperty.PropertyName)
- UpdateAlignment();
- else if (e.PropertyName == SearchBar.PlaceholderColorProperty.PropertyName)
- UpdatePlaceholderColor();
- else if (e.PropertyName == SearchBar.TextColorProperty.PropertyName)
- UpdateTextColor();
- }
-
- void OnQuerySubmitted(SearchBox sender, SearchBoxQuerySubmittedEventArgs e)
- {
- Element.OnSearchButtonPressed();
- }
-
- void UpdatePlaceholder()
- {
- Control.PlaceholderText = Element.Placeholder ?? string.Empty;
- }
-
- void UpdateFont()
- {
- if (Control == null)
- return;
-
- var searchBar = Element;
-
- if (searchBar == null)
- return;
-
- var searchBarIsDefault = searchBar.FontFamily == null &&
- searchBar.FontSize == Device.GetNamedSize(NamedSize.Default, typeof (SearchBar), true) &&
- searchBar.FontAttributes == FontAttributes.None;
-
- if (searchBarIsDefault && !_fontApplied)
- return;
-
- if (searchBarIsDefault)
- {
- Control.ClearValue(Windows.UI.Xaml.Controls.Control.FontStyleProperty);
- Control.ClearValue(Windows.UI.Xaml.Controls.Control.FontSizeProperty);
- Control.ClearValue(Windows.UI.Xaml.Controls.Control.FontFamilyProperty);
- Control.ClearValue(Windows.UI.Xaml.Controls.Control.FontWeightProperty);
- Control.ClearValue(Windows.UI.Xaml.Controls.Control.FontStretchProperty);
- }
- else
- Control.ApplyFont(searchBar);
-
- _fontApplied = true;
- }
-
- void OnQueryChanged(SearchBox sender, SearchBoxQueryChangedEventArgs e)
- {
- ((IElementController)Element).SetValueFromRenderer(SearchBar.TextProperty, e.QueryText);
- }
-
- void UpdateText()
- {
- Control.QueryText = Element.Text ?? string.Empty;
- }
-
- void UpdateAlignment()
- {
- Control.HorizontalTextAlignment = Element.HorizontalTextAlignment.ToNativeTextAlignment();
- }
-
- void UpdateTextColor()
- {
- if (_queryTextBox == null)
- return;
-
- var textColor = Element.TextColor;
-
- if (textColor.IsDefault)
- {
- if (_defaultTextColorBrush == null)
- return;
-
- _queryTextBox.Foreground = _defaultTextColorBrush;
- }
-
- if (_defaultTextColorBrush == null)
- _defaultTextColorBrush = _queryTextBox.Foreground;
-
- _queryTextBox.Foreground = textColor.ToBrush();
- }
-
- void UpdatePlaceholderColor()
- {
- if (_queryTextBox == null)
- return;
-
- var placeholderColor = Element.PlaceholderColor;
-
- if (placeholderColor.IsDefault)
- {
- if (_defaultPlaceholderColorBrush == null)
- return;
-
- _queryTextBox.PlaceholderForegroundBrush = _defaultPlaceholderColorBrush;
- }
-
- if (_defaultPlaceholderColorBrush == null)
- _defaultPlaceholderColorBrush = _queryTextBox.PlaceholderForegroundBrush;
-
- _queryTextBox.PlaceholderForegroundBrush = placeholderColor.ToBrush();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Media.Animation;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class TabbedPageRenderer
- : IVisualElementRenderer
- {
- const string TabBarHeaderTextBlockName = "TabbedPageHeaderTextBlock";
- const string TabbedPageHeaderStackPanelName = "TabbedPageHeaderStackPanel";
-
- Color _barBackgroundColor;
- Color _barTextColor;
- Canvas _canvas;
- bool _disposed;
- TabsControl _tabs;
- VisualElementTracker<Page, Canvas> _tracker;
-
- public TabbedPage Page
- {
- get { return (TabbedPage)Element; }
- }
-
- protected VisualElementTracker<Page, Canvas> Tracker
- {
- get { return _tracker; }
- set
- {
- if (_tracker == value)
- return;
-
- if (_tracker != null)
- _tracker.Dispose();
-
- _tracker = value;
- }
- }
-
- public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- public FrameworkElement ContainerElement
- {
- get { return _canvas; }
- }
-
- public VisualElement Element { get; private set; }
-
- public void SetElement(VisualElement element)
- {
- if (element != null && !(element is TabbedPage))
- throw new ArgumentException("Element must be a TabbedPage", "element");
-
- var oldElement = Page;
- Element = element;
-
- if (oldElement != null)
- {
- oldElement.PropertyChanged -= OnElementPropertyChanged;
- ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged;
- }
-
- if (element != null)
- {
- if (_tracker == null)
- {
- _tabs = new TabsControl();
-
- _canvas = new Canvas();
-
- _canvas.ChildrenTransitions = new TransitionCollection
- {
- new EntranceThemeTransition()
- };
-
- Tracker = new BackgroundTracker<Canvas>(Panel.BackgroundProperty)
- {
- Element = (Page)element,
- Control = _canvas,
- Container = _canvas
- };
-
- _canvas.Loaded += canvas_OnLoaded;
- _canvas.Unloaded += canvas_OnUnloaded;
-
- _tabs.Loaded += tabs_OnLoaded;
- }
-
- _tabs.DataContext = element;
-
- OnPagesChanged(Page.Children, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
- UpdateCurrentPage();
-
- ((INotifyCollectionChanged)Page.Children).CollectionChanged += OnPagesChanged;
- element.PropertyChanged += OnElementPropertyChanged;
- }
-
- OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
- }
-
- Brush GetBarBackgroundBrush()
- {
- object defaultColor = Windows.UI.Xaml.Application.Current.Resources["ApplicationPageBackgroundThemeBrush"];
- if (Page.BarBackgroundColor.IsDefault && defaultColor != null)
- return (Brush)defaultColor;
- return Page.BarBackgroundColor.ToBrush();
- }
-
- Brush GetBarForegroundBrush()
- {
- object defaultColor = Windows.UI.Xaml.Application.Current.Resources["ApplicationForegroundThemeBrush"];
- if (Page.BarTextColor.IsDefault && defaultColor != null)
- return (Brush)defaultColor;
- return Page.BarTextColor.ToBrush();
- }
-
- public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- if (_canvas.Children.Count == 0)
- return new SizeRequest();
-
- var constraint = new Windows.Foundation.Size(widthConstraint, heightConstraint);
- var child = (FrameworkElement)_canvas.Children[0];
-
- var oldWidth = child.Width;
- var oldHeight = child.Height;
-
- child.Height = double.NaN;
- child.Width = double.NaN;
-
- child.Measure(constraint);
- var result = new Size(Math.Ceiling(child.DesiredSize.Width), Math.Ceiling(child.DesiredSize.Height));
-
- child.Width = oldWidth;
- child.Height = oldHeight;
-
- return new SizeRequest(result);
- }
-
- UIElement IVisualElementRenderer.GetNativeElement()
- {
- return null;
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing || _disposed)
- return;
-
- _disposed = true;
-
- Page?.SendDisappearing();
- SetElement(null);
- Tracker = null;
- }
-
- protected virtual void OnElementChanged(VisualElementChangedEventArgs e)
- {
- var changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- e.Apply(Page.Children, _tabs.Items);
- }
-
- internal void OnTabSelected(Page tab)
- {
- CloseTabs();
- Page.CurrentPage = tab;
- }
-
- void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == nameof(TabbedPage.CurrentPage))
- {
- UpdateCurrentPage();
- UpdateBarTextColor();
- UpdateBarBackgroundColor();
- }
- else if (e.PropertyName == TabbedPage.BarTextColorProperty.PropertyName)
- UpdateBarTextColor();
- else if (e.PropertyName == TabbedPage.BarBackgroundColorProperty.PropertyName)
- UpdateBarBackgroundColor();
- }
-
- void UpdateBarBackgroundColor()
- {
- TabbedPage tabbedPage = Element as TabbedPage;
- if (tabbedPage == null) return;
- var barBackgroundColor = tabbedPage.BarBackgroundColor;
-
- if (barBackgroundColor == _barBackgroundColor) return;
- _barBackgroundColor = barBackgroundColor;
-
- var controlToolbarBackground = _tabs.ToolbarBackground;
- if (controlToolbarBackground == null && barBackgroundColor.IsDefault) return;
-
- var brush = GetBarBackgroundBrush();
- if (brush == controlToolbarBackground) return;
-
- _tabs.ToolbarBackground = brush;
-
- foreach (StackPanel tabBarGrid in _tabs.GetDescendantsByName<StackPanel>(TabbedPageHeaderStackPanelName))
- {
- tabBarGrid.Background = brush;
- }
- }
-
- void UpdateBarTextColor()
- {
- TabbedPage tabbedPage = Element as TabbedPage;
- if (tabbedPage == null) return;
- var barTextColor = tabbedPage.BarTextColor;
-
- if (barTextColor == _barTextColor) return;
- _barTextColor = barTextColor;
-
- var controlToolbarForeground = _tabs.ToolbarForeground;
- if (controlToolbarForeground == null && barTextColor.IsDefault) return;
-
- var brush = GetBarForegroundBrush();
- if (brush == controlToolbarForeground) return;
-
- _tabs.ToolbarForeground = brush;
-
- foreach (TextBlock tabBarTextBlock in _tabs.GetDescendantsByName<TextBlock>(TabBarHeaderTextBlockName))
- {
- tabBarTextBlock.Foreground = brush;
- }
- }
-
- void UpdateCurrentPage()
- {
- var renderer = Page.CurrentPage.GetOrCreateRenderer();
- _canvas.Children.Clear();
-
- if (renderer != null)
- _canvas.Children.Add(renderer.ContainerElement);
- }
-
- void canvas_OnLoaded(object sender, RoutedEventArgs args)
- {
- if (Page == null)
- return;
-
- ShowTabs();
- Page.SendAppearing();
- }
-
- void tabs_OnLoaded(object sender, RoutedEventArgs e)
- {
- UpdateBarTextColor();
- UpdateBarBackgroundColor();
- }
-
- Windows.UI.Xaml.Controls.Page GetTopPage()
- {
- var frame = Window.Current.Content as Windows.UI.Xaml.Controls.Frame;
- if (frame == null)
- return null;
-
- return frame.Content as Windows.UI.Xaml.Controls.Page;
- }
-
- AppBar GetOrCreateAppBar()
- {
- var npage = GetTopPage();
- if (npage == null)
- return null;
-
- if (npage.TopAppBar == null)
- npage.TopAppBar = new AppBar();
-
- return npage.TopAppBar;
- }
-
- void ShowTabs()
- {
- var bar = GetOrCreateAppBar();
- if (bar != null)
- bar.Content = _tabs;
- }
-
- void CloseTabs()
- {
- var page = GetTopPage();
- if (page == null)
- return;
-
- if (page.TopAppBar != null)
- page.TopAppBar.IsOpen = false;
- }
-
- void RemoveTabs()
- {
- var page = GetTopPage();
- if (page == null)
- return;
-
- // Explicitly unparent this.tabs so we can reuse
- if (page.TopAppBar != null)
- page.TopAppBar.Content = null;
-
- page.TopAppBar = null;
- }
-
- void canvas_OnUnloaded(object sender, RoutedEventArgs args)
- {
- RemoveTabs();
- Page?.SendDisappearing();
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="using:Xamarin.Forms.Platform.WinRT">
-
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source="Resources.xaml" />
- <ResourceDictionary Source="FormsTextBoxStyle.xaml" />
- <ResourceDictionary Source="FormsProgressBarStyle.xaml" />
- </ResourceDictionary.MergedDictionaries>
-
- <SolidColorBrush x:Key="TabButtonPointerOverBackgroundBrush" Color="#44888888" />
- <SolidColorBrush x:Key="TabButtonBackgroundBrush" Color="#29888888" />
-
- <Style x:Key="FormsListViewItem" TargetType="ListViewItem">
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- <Setter Property="Margin" Value="0" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ListViewItem">
- <local:FormsListViewItemPresenter
- CheckBrush="{ThemeResource ListViewItemCheckThemeBrush}"
- CheckHintBrush="{ThemeResource ListViewItemCheckHintThemeBrush}"
- CheckSelectingBrush="{ThemeResource ListViewItemCheckSelectingThemeBrush}"
- ContentMargin="0"
- DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
- DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
- DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
- DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
- FocusBorderBrush="{ThemeResource ListViewItemFocusBorderThemeBrush}"
- PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
- PointerOverBackground="{ThemeResource ListViewItemPointerOverBackgroundThemeBrush}"
- PointerOverBackgroundMargin="0"
- ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
- SelectedBackground="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}"
- SelectedBorderThickness="{ThemeResource ListViewItemCompactSelectedBorderThemeThickness}"
- SelectedForeground="{ThemeResource ListViewItemSelectedForegroundThemeBrush}"
- SelectedPointerOverBackground="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}"
- SelectedPointerOverBorderBrush="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}"
- SelectionCheckMarkVisualEnabled="False" />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="TextCell">
- <StackPanel Margin="5,4,4,9.5">
- <TextBlock
- Text="{Binding Text}"
- Style="{ThemeResource TitleTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
-
- <TextBlock
- Text="{Binding Detail}"
- Style="{ThemeResource BodyTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
- </StackPanel>
- </DataTemplate>
-
- <DataTemplate x:Key="ListViewHeaderTextCell">
- <StackPanel Margin="5,4,4,9.5">
- <TextBlock
- Text="{Binding Text}"
- Style="{ThemeResource SubheaderTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
-
- <TextBlock
- Text="{Binding Detail}"
- Style="{ThemeResource BodyTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
- </StackPanel>
- </DataTemplate>
-
- <DataTemplate x:Key="ImageCell">
- <Grid Margin="5,4,4,9.5">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition />
- </Grid.ColumnDefinitions>
-
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- </Grid.RowDefinitions>
-
- <Image Grid.Column="0" Grid.RowSpan="2"
- DataContext="{Binding ImageSource, Converter={StaticResource ImageConverter}}"
- Source="{Binding Value}"
- VerticalAlignment="Center" />
-
- <TextBlock Grid.Column="1" Grid.Row="0"
- Text="{Binding Text}"
- Style="{ThemeResource TitleTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
-
- <TextBlock Grid.Column="1" Grid.Row="1"
- Text="{Binding Detail}"
- Style="{ThemeResource BodyTextBlockStyle}"
- Visibility="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource CollapseWhenEmpty}}"
- Foreground="{Binding DetailColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
- </Grid>
- </DataTemplate>
-
- <DataTemplate x:Key="SwitchCell">
- <Grid Margin="5,4,4,9.5" HorizontalAlignment="Stretch">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
-
- <TextBlock Grid.Column="0" Text="{Binding Text}" VerticalAlignment="Center" Style="{ThemeResource TitleTextBlockStyle}" />
-
- <ToggleSwitch Grid.Column="1" IsOn="{Binding On, Mode=TwoWay}" OnContent="" OffContent="" VerticalAlignment="Center" />
- </Grid>
- </DataTemplate>
-
- <DataTemplate x:Key="EntryCell">
- <local:EntryCellTextBox Margin="5,4,4,9.5" IsEnabled="{Binding IsEnabled}" Header="{Binding}" Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" PlaceholderText="{Binding Placeholder}" TextAlignment="{Binding HorizontalTextAlignment,Converter={StaticResource HorizontalTextAlignmentConverter}}" InputScope="{Binding Keyboard,Converter={StaticResource KeyboardConverter}}" HorizontalAlignment="Stretch">
- <local:EntryCellTextBox.HeaderTemplate>
- <DataTemplate>
- <TextBlock Text="{Binding Label}" Style="{ThemeResource TitleTextBlockStyle}" Foreground="{Binding LabelColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}" />
- </DataTemplate>
- </local:EntryCellTextBox.HeaderTemplate>
- </local:EntryCellTextBox>
- </DataTemplate>
-
- <DataTemplate x:Key="ViewCell">
- <ContentControl DataContext="{Binding Cell}">
- <ContentPresenter Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" Content="{Binding View, Converter={StaticResource ViewToRenderer}}" />
- </ContentControl>
- </DataTemplate>
-
- <Style x:Key="JumpListGrid" TargetType="GridView">
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <Border Background="{ThemeResource SystemColorControlAccentBrush}" Padding="5" Margin="3" MinHeight="80" MinWidth="80">
- <TextBlock Text="{Binding}" Style="{ThemeResource SubheaderTextBlockStyle}" VerticalAlignment="Bottom" />
- </Border>
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <GroupStyle x:Key="ListViewGroup" HidesIfEmpty="False">
- <GroupStyle.HeaderContainerStyle>
- <Style TargetType="ListViewHeaderItem">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate>
- <local:ListGroupHeaderPresenter />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </GroupStyle.HeaderContainerStyle>
- <GroupStyle.HeaderTemplate>
- <DataTemplate>
- <local:CellControl IsGroupHeader="true" HorizontalContentAlignment="Stretch" />
- </DataTemplate>
- </GroupStyle.HeaderTemplate>
- </GroupStyle>
-
- <Style TargetType="local:TabButton">
- <Setter Property="MinWidth" Value="166" />
- <Setter Property="Margin" Value="0,0,15,0" />
- <Setter Property="Padding" Value="9.5" />
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- <Setter Property="VerticalAlignment" Value="Stretch" />
- <Setter Property="VerticalContentAlignment" Value="Bottom" />
- <Setter Property="Background" Value="{ThemeResource TabButtonBackgroundBrush}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate>
- <Border x:Name="Border" Background="{TemplateBinding Background}" BorderThickness="0" Margin="{TemplateBinding Margin}">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <VisualState x:Name="Pressed">
- <Storyboard>
- <PointerDownThemeAnimation TargetName="Border" />
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TabButtonPointerOverBackgroundBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TabButtonPointerOverBackgroundBrush}" />
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverForegroundThemeBrush}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualStateGroup.Transitions>
- <VisualTransition From="Pressed" To="Normal">
- <Storyboard>
- <PointerUpThemeAnimation TargetName="Border" />
- </Storyboard>
- </VisualTransition>
- <VisualTransition From="Pressed" To="PointerOver">
- <Storyboard>
- <PointerUpThemeAnimation TargetName="Border" />
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
-
- <ContentPresenter x:Name="ContentPresenter" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style TargetType="local:TabsControl">
- <Setter Property="Background" Value="{ThemeResource AppBarBackgroundThemeBrush}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate>
- <Border Background="{TemplateBinding Background}" BorderThickness="0">
- <Grid Margin="19,13,19,13">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="*" />
- </Grid.RowDefinitions>
-
- <TextBlock Grid.Row="0" Margin="9.5,0,0,9.5" Text="{Binding Title, Converter={StaticResource UpperConverter}}"
- Opacity=".6" FontWeight="SemiBold" Foreground="{ThemeResource AppBarItemForegroundThemeBrush}"
- Style="{ThemeResource BaseTextBlockStyle}" />
-
- <ScrollViewer Grid.Row="1" VerticalScrollMode="Disabled" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto">
- <ItemsPresenter />
- </ScrollViewer>
- </Grid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Setter Property="ItemsPanel">
- <Setter.Value>
- <ItemsPanelTemplate>
- <StackPanel Orientation="Horizontal" Margin="0,11,0,0" Background="{Binding BarBackgroundColor, Converter={StaticResource ColorConverter}, ConverterParameter=TabButtonBackgroundBrush}" Name="TabbedPageHeaderStackPanel" />
- </ItemsPanelTemplate>
- </Setter.Value>
- </Setter>
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <local:TabButton>
- <StackPanel VerticalAlignment="Bottom">
- <Image DataContext="{Binding Icon, Converter={StaticResource ImageConverter}}" Source="{Binding Value}" HorizontalAlignment="Left" />
- <TextBlock Margin="0,15,0,15" Text="{Binding Title, Converter={StaticResource UpperConverter}}"
- Style="{ThemeResource CaptionTextBlockStyle}" FontWeight="SemiBold" Name="TabbedPageHeaderTextBlock" HorizontalAlignment="Left" />
- </StackPanel>
- </local:TabButton>
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <ControlTemplate x:Key="MasterDetailSplit">
- <Grid Background="{TemplateBinding Background}">
- <Grid.Resources>
- <Style TargetType="local:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}">
- <Setter Property="Background" Value="Transparent" />
- <Setter Property="InvisibleBackButtonCollapsed" Value="True" />
- </Style>
- </Grid.Resources>
-
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
-
- <Border Grid.Column="0" Margin="0" Padding="0" Background="{Binding Converter={StaticResource MasterBackgroundConverter}, RelativeSource={RelativeSource Mode=TemplatedParent}}">
- <ContentPresenter x:Name="masterPresenter" />
- </Border>
-
- <ContentPresenter x:Name="detailPresenter" Grid.Column="1" />
- </Grid>
- </ControlTemplate>
-
- <ControlTemplate x:Key="MasterDetailPopup">
- <Grid Background="{TemplateBinding Background}">
- <Grid.Resources>
- <Style TargetType="local:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}">
- <Setter Property="Background" Value="Transparent" />
- </Style>
- </Grid.Resources>
-
- <Popup x:Name="popup" IsLightDismissEnabled="true">
- <Popup.ChildTransitions>
- <TransitionCollection>
- <PaneThemeTransition Edge="Left" />
- </TransitionCollection>
- </Popup.ChildTransitions>
-
- <Border Margin="0" Padding="0" BorderThickness="0" Background="{Binding Converter={StaticResource MasterBackgroundConverter}, RelativeSource={RelativeSource Mode=TemplatedParent}}">
- <ContentPresenter x:Name="masterPresenter" />
- </Border>
- </Popup>
-
- <ContentPresenter x:Name="detailPresenter" />
- </Grid>
- </ControlTemplate>
-
- <Style x:Key="PageControlDefaultStyle" TargetType="local:PageControl">
- <Setter Property="ContentMargin" Value="0" />
- <Setter Property="TitleBrush" Value="{ThemeResource DefaultTextForegroundThemeBrush}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:PageControl">
- <Grid Background="{TemplateBinding Background}">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="*" />
- </Grid.RowDefinitions>
-
- <Grid Grid.Row="0" Grid.Column="0" Height="79" VerticalAlignment="Center" Background="{TemplateBinding ToolbarBackground}" Visibility="{TemplateBinding TitleVisibility}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" MinWidth="{Binding TitleInset,RelativeSource={RelativeSource TemplatedParent}}" />
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
-
- <AppBarButton x:Name="backButton" Grid.Column="0" Margin="0,6,0,0" Foreground="{TemplateBinding TitleBrush}" ToolTipService.ToolTip="{TemplateBinding BackButtonTitle}" HorizontalAlignment="Right" VerticalAlignment="Center" Visibility="Collapsed">
- <AppBarButton.Icon>
- <SymbolIcon Symbol="Back" />
- </AppBarButton.Icon>
- </AppBarButton>
-
- <TextBlock Name="title" Padding="10,0,0,0" Grid.Column="1" Foreground="{TemplateBinding TitleBrush}" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Text="{Binding Title}" />
- </Grid>
-
- <ContentPresenter Margin="{TemplateBinding ContentMargin}" ContentTransitions="{TemplateBinding ContentTransitions}" x:Name="presenter" Grid.Row="1" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style TargetType="local:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}" />
-
- <Style TargetType="local:FormsSearchBox">
- <Setter Property="Background" Value="{ThemeResource SearchBoxBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource SearchBoxBorderThemeBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource SearchBoxBorderThemeThickness}"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontSize" Value="{ThemeResource SearchBoxContentThemeFontSize}"/>
- <Setter Property="FontWeight" Value="{ThemeResource SearchBoxContentThemeFontWeight}"/>
- <Setter Property="Foreground" Value="{ThemeResource SearchBoxForegroundThemeBrush}"/>
- <Setter Property="Padding" Value="{ThemeResource SearchBoxThemePadding}"/>
- <Setter Property="IsTabStop" Value="False"/>
- <Setter Property="Typography.StylisticSet20" Value="True"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:FormsSearchBox">
- <Grid x:Name="SearchBoxGrid">
- <Grid.Resources>
- <Style x:Key="SearchButtonStyle" TargetType="Button">
- <Setter Property="IsTabStop" Value="False"/>
- <Setter Property="VerticalAlignment" Value="Stretch"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- </VisualStateGroup>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Focused"/>
- <VisualState x:Name="Unfocused"/>
- <VisualState x:Name="PointerFocused"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="SearchButtonBackground" Background="{TemplateBinding Background}">
- <TextBlock x:Name="SearchGlyph" AutomationProperties.AccessibilityView="Raw" Foreground="{TemplateBinding Foreground}" FontStyle="Normal" FontFamily="{ThemeResource SymbolThemeFontFamily}" HorizontalAlignment="Center" Text="" VerticalAlignment="Center"/>
- </Grid>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="SearchTextBoxStyle" TargetType="local:FormsTextBox">
- <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
- <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
- <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
- <Setter Property="PlaceholderForegroundBrush" Value="{ThemeResource TextBoxPlaceholderTextThemeBrush}"/>
- <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
- <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
- <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
- <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="local:FormsTextBox">
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BackgroundElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement"/>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement"/>
- <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused"/>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ButtonStates"/>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="BackgroundElement" Background="{TemplateBinding Background}" Margin="{TemplateBinding BorderThickness}" Grid.Row="1" Grid.RowSpan="1"/>
- <Border x:Name="BorderElement" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.Row="1" Grid.RowSpan="1"/>
- <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}" FontWeight="Semilight" Margin="0,4,0,4" Grid.Row="0"/>
- <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled"/>
- <ContentControl x:Name="PlaceholderTextContentPresenter" Grid.ColumnSpan="2" Content="{TemplateBinding PlaceholderText}" Foreground="{TemplateBinding PlaceholderForegroundBrush}" IsHitTestVisible="False" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1"
- HorizontalAlignment="{Binding TextAlignment,
- RelativeSource={RelativeSource Mode=TemplatedParent},
- Converter={StaticResource AlignmentConverter}}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Grid.Resources>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding Background, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding BorderBrush, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding Foreground, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxPointerOverBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxPointerOverTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxDisabledTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchTextBox">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Focused">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchSuggestionsPopupBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="FocusedDropDown">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchBoxGrid">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchBoxBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchButton">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedTextThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="SearchSuggestionsPopupBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="SearchBoxBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- <ColumnDefinition Width="Auto"/>
- </Grid.ColumnDefinitions>
- <local:FormsTextBox TextAlignment="{TemplateBinding HorizontalTextAlignment}" x:Name="SearchTextBox" BorderThickness="0" Background="Transparent" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" InputScope="Search" MinHeight="{ThemeResource SearchBoxTextBoxThemeMinHeight}" MaxLength="2048" Padding="{TemplateBinding Padding}" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{StaticResource SearchTextBoxStyle}" TextWrapping="NoWrap" VerticalAlignment="Stretch"/>
- <Button x:Name="SearchButton" AutomationProperties.AccessibilityView="Raw" Background="Transparent" Grid.Column="1" FontWeight="{ThemeResource SearchBoxButtonThemeFontWeight}" Style="{StaticResource SearchButtonStyle}"/>
- </Grid>
- </Border>
- <Popup x:Name="SearchSuggestionsPopup" HorizontalAlignment="Left" VerticalAlignment="Bottom">
- <Border x:Name="SearchSuggestionsPopupBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" MinWidth="{ThemeResource SearchBoxSuggestionPopupThemeMinWidth}">
- <Border.Resources>
- <Style x:Key="SearchSuggestionListViewItemStyle" TargetType="ListViewItem">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="TabNavigation" Value="Local"/>
- <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
- <Setter Property="Margin" Value="0"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ListViewItem">
- <Border x:Name="OuterContainer">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <PointerDownThemeAnimation TargetName="ContentContainer"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOverPressed">
- <Storyboard>
- <PointerDownThemeAnimation TargetName="ContentContainer"/>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <DoubleAnimation Duration="0" To="{ThemeResource ListViewItemDisabledThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ListViewItemContentPresenter"/>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Focused">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisual"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Unfocused"/>
- <VisualState x:Name="PointerFocused"/>
- </VisualStateGroup>
- <VisualStateGroup x:Name="SelectionStates">
- <VisualState x:Name="Unselecting"/>
- <VisualState x:Name="Unselected"/>
- <VisualState x:Name="UnselectedPointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="UnselectedSwiping"/>
- <VisualState x:Name="Selecting"/>
- <VisualState x:Name="Selected">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="SelectedSwiping"/>
- <VisualState x:Name="SelectedUnfocused">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="ContentContainer">
- <Rectangle x:Name="PointerOverBorder" Fill="{ThemeResource SearchBoxButtonBackgroundThemeBrush}" IsHitTestVisible="False" Opacity="0"/>
- <Rectangle x:Name="FocusVisual" IsHitTestVisible="False" Opacity="0" Stroke="{ThemeResource ListViewItemFocusBorderThemeBrush}" StrokeThickness="2"/>
- <Rectangle x:Name="SelectionBackground" Fill="{ThemeResource SearchBoxButtonBackgroundThemeBrush}" Opacity="0"/>
- <ContentPresenter x:Name="ListViewItemContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" FontWeight="{Binding FontWeight, ElementName=SearchTextBox}" FontSize="{Binding FontSize, ElementName=SearchTextBox}" FontFamily="{Binding FontFamily, ElementName=SearchTextBox}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Grid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Border.Resources>
- <Grid MaxHeight="{ThemeResource SearchBoxSuggestionPopupThemeMaxHeight}">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition/>
- </Grid.RowDefinitions>
- <Border x:Name="IMECandidateListContainer"/>
- <Border x:Name="IMECandidateListSeparator" BorderBrush="{ThemeResource SearchBoxIMECandidateListSeparatorThemeBrush}" BorderThickness="{ThemeResource SearchBoxIMECandidateListSeparatorThemeThickness}" Grid.Row="1" Visibility="Collapsed"/>
- <ListView x:Name="SearchSuggestionsList" Background="{ThemeResource TextBoxBackgroundThemeBrush}" IsTabStop="False" IsItemClickEnabled="true" Grid.Row="2">
- <ListView.Resources>
- <DataTemplate x:Name="HitHighlightedTextBlock">
- <RichTextBlock x:Name="TextBlock" AutomationProperties.AccessibilityView="Raw" SelectionHighlightColor="{ThemeResource SearchBoxHitHighlightForegroundThemeBrush}" TextWrapping="Wrap" TextTrimming="WordEllipsis">
- <RichTextBlock.Resources>
- <DataTemplate x:Name="SelectedHitHighlightedRun">
- <Run Foreground="{ThemeResource SearchBoxHitHighlightSelectedForegroundThemeBrush}"/>
- </DataTemplate>
- </RichTextBlock.Resources>
- </RichTextBlock>
- </DataTemplate>
- </ListView.Resources>
- <ListView.ItemTemplate>
- <DataTemplate>
- <Grid>
- <ContentControl x:Name="QuerySuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxQuerySuggestionThemeMargin}" Visibility="Collapsed" VerticalAlignment="Center"/>
- <Grid x:Name="ResultSuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxResultSuggestionThemeMargin}" Visibility="Collapsed">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition/>
- <RowDefinition/>
- </Grid.RowDefinitions>
- <Image x:Name="ResultSuggestionImage" Height="{ThemeResource SearchBoxResultSuggestionImageThemeHeight}" Margin="{ThemeResource SearchBoxSuggestionSubcomponentThemeMargin}" Grid.RowSpan="2" Width="{ThemeResource SearchBoxResultSuggestionImageThemeWidth}"/>
- <ContentControl x:Name="ResultSuggestionText" Grid.Column="1" VerticalAlignment="Center"/>
- <ContentControl x:Name="ResultSuggestionDetailText" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"/>
- </Grid>
- <Grid x:Name="SeparatorSuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxSeparatorSuggestionThemeMargin}" Visibility="Collapsed">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <TextBlock x:Name="SeparatorSuggestionText" Margin="{ThemeResource SearchBoxSuggestionSubcomponentThemeMargin}" TextTrimming="WordEllipsis" VerticalAlignment="Center"/>
- <Border BorderBrush="{ThemeResource SearchBoxSeparatorSuggestionForegroundThemeBrush}" BorderThickness="0,1,0,0" Grid.Column="1" VerticalAlignment="Center"/>
- </Grid>
- </Grid>
- </DataTemplate>
- </ListView.ItemTemplate>
- <ListView.ItemContainerTransitions>
- <TransitionCollection/>
- </ListView.ItemContainerTransitions>
- <ListView.ItemContainerStyle>
- <StaticResource ResourceKey="SearchSuggestionListViewItemStyle"/>
- </ListView.ItemContainerStyle>
- </ListView>
- </Grid>
- </Border>
- </Popup>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style TargetType="ToggleSwitch">
- <Setter Property="Foreground" Value="{ThemeResource ToggleSwitchForegroundThemeBrush}"/>
- <Setter Property="HorizontalAlignment" Value="Left"/>
- <Setter Property="VerticalAlignment" Value="Center"/>
- <Setter Property="HorizontalContentAlignment" Value="Left"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontWeight" Value="SemiBold"/>
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
- <Setter Property="MinWidth" Value="154"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ToggleSwitch">
- <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchCurtain">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchCurtainPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="InnerBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchTrackPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbPointerOverBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbPointerOverBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchCurtain">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchCurtainPressedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="InnerBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchTrackPressedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbPressedBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbPressedForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchHeaderDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OffContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OnContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="OuterBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchOuterBorderDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="InnerBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchTrackDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SwitchKnob">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBorderThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchCurtain">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchCurtainDisabledBackgroundThemeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ToggleStates">
- <VisualStateGroup.Transitions>
- <VisualTransition x:Name="DraggingToOnTransition" From="Dragging" GeneratedDuration="0" To="On">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="DraggingToOffTransition" From="Dragging" GeneratedDuration="0" To="Off">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="OnToOffTransition" From="On" GeneratedDuration="0" To="Off">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- <VisualTransition x:Name="OffToOnTransition" From="Off" GeneratedDuration="0" To="On">
- <Storyboard>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchKnob"/>
- <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" TargetName="SwitchCurtain"/>
- </Storyboard>
- </VisualTransition>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Dragging"/>
- <VisualState x:Name="Off">
- <Storyboard>
- <DoubleAnimation Duration="0" To="-44" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="On">
- <Storyboard>
- <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
- <DoubleAnimation Duration="0" To="38" Storyboard.TargetProperty="X" Storyboard.TargetName="KnobTranslateTransform"/>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="ContentStates">
- <VisualState x:Name="OffContent">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OffContentPresenter"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OffContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <x:Boolean>True</x:Boolean>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="OnContent">
- <Storyboard>
- <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OnContentPresenter"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OnContentPresenter">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <x:Boolean>True</x:Boolean>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </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>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <ContentPresenter x:Name="HeaderContentPresenter" AutomationProperties.AccessibilityView="Raw" Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource ToggleSwitchHeaderForegroundThemeBrush}" FontWeight="Semilight" Margin="6"/>
- <Grid Margin="{TemplateBinding Padding}" Grid.Row="1">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="7"/>
- <ColumnDefinition Width="Auto"/>
- </Grid.ColumnDefinitions>
- <ContentPresenter x:Name="OffContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OffContentTemplate}" Content="{TemplateBinding OffContent}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Margin="6,5,0,16" MinWidth="65" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- <ContentPresenter x:Name="OnContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OnContentTemplate}" Content="{TemplateBinding OnContent}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Margin="6,5,0,16" MinWidth="65" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- <Grid Background="Transparent" Grid.Column="2" ManipulationMode="None">
- <Grid x:Name="SwitchKnobBounds" Height="19" Margin="13,5,13,16">
- <Border x:Name="OuterBorder" BorderBrush="{ThemeResource ToggleSwitchOuterBorderBorderThemeBrush}" BorderThickness="2">
- <Border x:Name="InnerBorder" BorderBrush="{ThemeResource ToggleSwitchTrackBorderThemeBrush}" BorderThickness="1" Background="{ThemeResource ToggleSwitchTrackBackgroundThemeBrush}">
- <ContentPresenter x:Name="SwitchCurtainBounds">
- <ContentPresenter x:Name="SwitchCurtainClip">
- <Rectangle x:Name="SwitchCurtain" Fill="{ThemeResource ToggleSwitchCurtainBackgroundThemeBrush}" Width="44">
- <Rectangle.RenderTransform>
- <TranslateTransform x:Name="CurtainTranslateTransform" X="-44"/>
- </Rectangle.RenderTransform>
- </Rectangle>
- </ContentPresenter>
- </ContentPresenter>
- </Border>
- </Border>
- <Rectangle x:Name="SwitchKnob" Fill="{ThemeResource ToggleSwitchThumbBackgroundThemeBrush}" HorizontalAlignment="Left" Stroke="{ThemeResource ToggleSwitchThumbBorderThemeBrush}" StrokeThickness="1" Width="12">
- <Rectangle.RenderTransform>
- <TranslateTransform x:Name="KnobTranslateTransform"/>
- </Rectangle.RenderTransform>
- </Rectangle>
- <Rectangle x:Name="FocusVisualWhite" Margin="-3" Opacity="0" StrokeDashOffset="1.5" StrokeEndLineCap="Square" Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}" StrokeDashArray="1,1"/>
- <Rectangle x:Name="FocusVisualBlack" Margin="-3" Opacity="0" StrokeDashOffset="0.5" StrokeEndLineCap="Square" Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}" StrokeDashArray="1,1"/>
- </Grid>
- <Thumb x:Name="SwitchThumb" AutomationProperties.AccessibilityView="Raw">
- <Thumb.Template>
- <ControlTemplate TargetType="Thumb">
- <Rectangle Fill="Transparent"/>
- </ControlTemplate>
- </Thumb.Template>
- </Thumb>
- </Grid>
- </Grid>
- </Grid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
-</ResourceDictionary>
-
+++ /dev/null
-using System;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class TabSelectedEventArgs
- : EventArgs
- {
- public TabSelectedEventArgs(Page tab)
- {
- if (tab == null)
- throw new ArgumentNullException("tab");
-
- Tab = tab;
- }
-
- public Page Tab { get; private set; }
- }
-
- public class TabButton
- : Windows.UI.Xaml.Controls.Button
- {
- protected override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
- Click += OnClick;
- }
-
- void OnClick(object sender, RoutedEventArgs routedEventArgs)
- {
- var page = DataContext as Page;
- if (page == null)
- return;
-
- var parent = page.RealParent as TabbedPage;
- if (parent == null)
- return;
-
- var renderer = Platform.GetRenderer(parent) as TabbedPageRenderer;
- if (renderer != null)
- renderer.OnTabSelected(page);
- }
- }
-
- public class TabsControl
- : ItemsControl
- {
-
- public static readonly DependencyProperty ToolbarForegroundProperty = DependencyProperty.Register(nameof(ToolbarForeground), typeof(Brush), typeof(TabsControl), new PropertyMetadata(default(Brush)));
- public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register(nameof(ToolbarBackground), typeof(Brush), typeof(TabsControl), new PropertyMetadata(default(Brush)));
-
- public Brush ToolbarBackground
- {
- get { return (Brush)GetValue(ToolbarBackgroundProperty); }
- set { SetValue(ToolbarBackgroundProperty, value); }
- }
-
- public Brush ToolbarForeground
- {
- get { return (Brush)GetValue(ToolbarForegroundProperty); }
- set { SetValue(ToolbarForegroundProperty, value); }
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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>
- <ProductVersion>8.0.30703</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Platform.WinRT</RootNamespace>
- <AssemblyName>Xamarin.Forms.Platform.WinRT.Tablet</AssemblyName>
- <DefaultLanguage>en-US</DefaultLanguage>
- <TargetPlatformVersion>8.1</TargetPlatformVersion>
- <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\ARM\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>;2008</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
- <OutputPath>bin\ARM\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>;2008</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>ARM</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x64\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>;2008</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
- <OutputPath>bin\x64\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>;2008</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x64</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x86\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <NoWarn>;2008</NoWarn>
- <DebugType>full</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
- <OutputPath>bin\x86\Release\</OutputPath>
- <DefineConstants>TRACE;NETFX_CORE;WINDOWS_APP</DefineConstants>
- <Optimize>true</Optimize>
- <NoWarn>;2008</NoWarn>
- <DebugType>pdbonly</DebugType>
- <PlatformTarget>x86</PlatformTarget>
- <UseVSHostingProcess>false</UseVSHostingProcess>
- <ErrorReport>prompt</ErrorReport>
- <Prefer32Bit>true</Prefer32Bit>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj">
- <Project>{f3fdd7ac-8899-4e41-bfd7-ec83403e736d}</Project>
- <Name>Xamarin.Forms.Platform.WinRT</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
- <Link>Properties\GlobalAssemblyInfo.cs</Link>
- </Compile>
- <Compile Include="Forms.cs" />
- <Compile Include="FormsListViewItemPresenter.cs" />
- <Compile Include="FormsSearchBox.cs" />
- <Compile Include="SearchBarRenderer.cs" />
- <Compile Include="TabbedPageRenderer.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="TabsControl.cs" />
- <Compile Include="WindowsPlatform.cs" />
- <Compile Include="WindowsPage.cs" />
- <Compile Include="WindowsPlatformServices.cs" />
- <Compile Include="WindowsResourcesProvider.cs" />
- </ItemGroup>
- <ItemGroup>
- <Page Include="..\Xamarin.Forms.Platform.WinRT\Resources.xaml">
- <Link>Resources.xaml</Link>
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- <Page Include="FormsProgressBarStyle.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- <Page Include="FormsTextBoxStyle.xaml">
- <SubType>Designer</SubType>
- <Generator>MSBuild:Compile</Generator>
- </Page>
- <Page Include="TabletResources.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Page>
- </ItemGroup>
- <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' ">
- <VisualStudioVersion>12.0</VisualStudioVersion>
- </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
+++ /dev/null
-//
-// AsyncValue.cs
-//
-// Author:
-// Eric Maupin <me@ermau.com>
-//
-// Copyright (c) 2013-2014 Xamarin, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Threading;
-using System.Threading.Tasks;
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
-{
- internal sealed class AsyncValue<T> : INotifyPropertyChanged
- {
- readonly T _defaultValue;
- readonly Task<T> _valueTask;
- bool _isRunning = true;
-
- public AsyncValue(Task<T> valueTask, T defaultValue)
- {
- if (valueTask == null)
- throw new ArgumentNullException("valueTask");
-
- _valueTask = valueTask;
- _defaultValue = defaultValue;
-
- TaskScheduler scheduler = TaskScheduler.FromCurrentSynchronizationContext();
-
- _valueTask.ContinueWith(t => { IsRunning = false; }, scheduler);
-
- _valueTask.ContinueWith(t => { OnPropertyChanged("Value"); }, CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, scheduler);
- }
-
- public bool IsRunning
- {
- get { return _isRunning; }
- set
- {
- if (_isRunning == value)
- return;
-
- _isRunning = value;
- OnPropertyChanged();
- }
- }
-
- public T Value
- {
- get
- {
- if (_valueTask.Status != TaskStatus.RanToCompletion)
- return _defaultValue;
-
- return _valueTask.Result;
- }
- }
-
- public event PropertyChangedEventHandler PropertyChanged;
-
- void OnPropertyChanged([CallerMemberName] string propertyName = null)
- {
- PropertyChangedEventHandler handler = PropertyChanged;
- if (handler != null)
- handler(this, new PropertyChangedEventArgs(propertyName));
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
-{
- public interface ICellRenderer : IRegisterable
- {
- Windows.UI.Xaml.DataTemplate GetTemplate(Cell cell);
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class MasterDetailControl : Control
- {
- public static readonly DependencyProperty MasterContentProperty = DependencyProperty.Register("MasterContent", typeof(object), typeof(MasterDetailControl),
- new PropertyMetadata(null, (d, e) => ((MasterDetailControl)d).UpdateMaster()));
-
- public static readonly DependencyProperty DetailContentProperty = DependencyProperty.Register("DetailContent", typeof(object), typeof(MasterDetailControl),
- new PropertyMetadata(null, (d, e) => ((MasterDetailControl)d).UpdateDetail()));
-
- public static readonly DependencyProperty IsMasterVisibleProperty = DependencyProperty.Register("IsMasterVisible", typeof(bool), typeof(MasterDetailControl),
- new PropertyMetadata(false, (d, e) => ((MasterDetailControl)d).UpdateMaster()));
-
- public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(MasterDetailControl),
- new PropertyMetadata("", (d, e) => ((MasterDetailControl)d).UpdateTitle()));
-
- public static readonly DependencyProperty DetailTitleVisibilityProperty = DependencyProperty.Register("DetailTitleVisibility", typeof(Visibility), typeof(MasterDetailControl),
- new PropertyMetadata(Visibility.Collapsed, (d, e) => ((MasterDetailControl)d).UpdateToolbar()));
-
- public static readonly DependencyProperty ToolbarForegroundProperty = DependencyProperty.Register("ToolbarForeground", typeof(Brush), typeof(MasterDetailControl),
- new PropertyMetadata(default(Brush), (d, e) => ((MasterDetailControl)d).UpdateToolbar()));
-
- public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register("ToolbarBackground", typeof(Brush), typeof(MasterDetailControl),
- new PropertyMetadata(default(Brush), (d, e) => ((MasterDetailControl)d).UpdateToolbar()));
-
- Windows.UI.Xaml.Controls.Grid _grd;
-
- Windows.UI.Xaml.Controls.ContentPresenter _masterPresenter;
- Windows.UI.Xaml.Controls.ContentPresenter _detailPresenter;
- Popup _popup;
- TextBlock _txbTitle;
-
- public object DetailContent
- {
- get { return GetValue(DetailContentProperty); }
- set { SetValue(DetailContentProperty, value); }
- }
-
- public Visibility DetailTitleVisibility
- {
- get { return (Visibility)GetValue(DetailTitleVisibilityProperty); }
- set { SetValue(DetailTitleVisibilityProperty, value); }
- }
-
- public bool IsMasterVisible
- {
- get { return (bool)GetValue(IsMasterVisibleProperty); }
- set { SetValue(IsMasterVisibleProperty, value); }
- }
-
- public object MasterContent
- {
- get { return GetValue(MasterContentProperty); }
- set { SetValue(MasterContentProperty, value); }
- }
-
- public string Title
- {
- get { return (string)GetValue(TitleProperty); }
- set { SetValue(TitleProperty, value); }
- }
-
- public Brush ToolbarBackground
- {
- get { return (Brush)GetValue(ToolbarBackgroundProperty); }
- set { SetValue(ToolbarBackgroundProperty, value); }
- }
-
- public Brush ToolbarForeground
- {
- get { return (Brush)GetValue(ToolbarForegroundProperty); }
- set { SetValue(ToolbarForegroundProperty, value); }
- }
-
- public event EventHandler UserClosedPopover;
-
- protected override void OnApplyTemplate()
- {
- if (_masterPresenter != null)
- {
- // Despite itself being unparented when the template changes, the presenters' children still think they're
- // parented and so the new presenters throw when the content is assigned to them.
- _masterPresenter.Content = null;
- _masterPresenter = null;
- }
-
- if (_detailPresenter != null)
- {
- _detailPresenter.Content = null;
- _detailPresenter = null;
- }
-
- if (_popup != null)
- {
- _popup.Closed -= OnPopupClosed;
- _popup = null;
- }
-
- base.OnApplyTemplate();
-
- _masterPresenter = GetTemplateChild("masterPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
- _detailPresenter = GetTemplateChild("detailPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
- _txbTitle = GetTemplateChild("txbTitle") as TextBlock;
- _grd = GetTemplateChild("grdToolbar") as Windows.UI.Xaml.Controls.Grid;
-
- _popup = GetTemplateChild("popup") as Popup;
- if (_popup != null)
- _popup.Closed += OnPopupClosed;
-
- UpdateMaster();
- UpdateDetail();
- UpdateTitle();
- UpdateToolbar();
- }
-
- void OnPopupClosed(object sender, object e)
- {
- EventHandler closed = UserClosedPopover;
- if (closed != null)
- closed(this, EventArgs.Empty);
- }
-
- void UpdateDetail()
- {
- if (_detailPresenter == null)
- return;
-
- _detailPresenter.Content = DetailContent;
- }
-
- void UpdateMaster()
- {
- if (_masterPresenter == null)
- return;
-
- bool visible = IsMasterVisible;
- _masterPresenter.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
- _masterPresenter.Content = MasterContent;
-
- if (_popup != null)
- _popup.IsOpen = visible;
- }
-
- void UpdateTitle()
- {
- if (_txbTitle == null)
- return;
-
- _txbTitle.Text = Title ?? "";
- }
-
- void UpdateToolbar()
- {
- if (_txbTitle == null)
- return;
-
- _grd.Visibility = DetailTitleVisibility;
- _grd.Background = ToolbarBackground;
- _txbTitle.Foreground = ToolbarForeground;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.ComponentModel;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public class MasterDetailPageRenderer : IVisualElementRenderer, ITitleProvider
- {
- MasterDetailControl _container;
-
- bool _disposed;
- IVisualElementRenderer _masterRenderer;
- IVisualElementRenderer _detailRenderer;
- bool _showTitle;
- VisualElementTracker<Page, PageControl> _tracker;
-
- public MasterDetailPage Element { get; private set; }
-
- protected VisualElementTracker<Page, PageControl> Tracker
- {
- get { return _tracker; }
- set
- {
- if (_tracker == value)
- return;
-
- if (_tracker != null)
- {
- _tracker.Dispose();
- }
-
- _tracker = value;
- }
- }
-
- bool IsPopoverFullScreen
- {
- get { return Device.Idiom == TargetIdiom.Phone; }
- }
-
- IPageController PageController => Element as IPageController;
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- Brush ITitleProvider.BarBackgroundBrush
- {
- set { _container.ToolbarBackground = value; }
- }
-
- Brush ITitleProvider.BarForegroundBrush
- {
- set { _container.ToolbarForeground = value; }
- }
-
- bool ITitleProvider.ShowTitle
- {
- get { return _showTitle; }
-
- set
- {
- if (_showTitle == value)
- return;
- _showTitle = value;
- if (_showTitle)
- _container.DetailTitleVisibility = Visibility.Visible;
- else
- _container.DetailTitleVisibility = Visibility.Collapsed;
- }
- }
-
- string ITitleProvider.Title
- {
- get { return _container.Title; }
-
- set { _container.Title = value; }
- }
-
- public FrameworkElement ContainerElement
- {
- get { return _container; }
- }
-
- VisualElement IVisualElementRenderer.Element
- {
- get { return Element; }
- }
-
- public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
-
- UIElement IVisualElementRenderer.GetNativeElement()
- {
- return null;
- }
-
- public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint)
- {
- return new SizeRequest(new Size(Device.Info.ScaledScreenSize.Width, Device.Info.ScaledScreenSize.Height));
- }
-
- public void SetElement(VisualElement element)
- {
- if (element != null && !(element is MasterDetailPage))
- throw new ArgumentException("Element must be a Page", "element");
-
- MasterDetailPage oldElement = Element;
- Element = (MasterDetailPage)element;
-
- if (oldElement != null)
- {
- oldElement.PropertyChanged -= OnElementPropertyChanged;
- }
-
- if (element != null)
- {
- if (_container == null)
- {
- _container = new MasterDetailControl();
- _container.UserClosedPopover += OnUserClosedPopover;
- _container.SizeChanged += OnNativeSizeChanged;
-
- Tracker = new BackgroundTracker<PageControl>(Control.BackgroundProperty) { Element = (Page)element, Container = _container };
-
- _container.Loaded += OnLoaded;
- _container.Unloaded += OnUnloaded;
- }
-
- element.PropertyChanged += OnElementPropertyChanged;
- UpdateBehavior();
- SetMaster(Element.Master);
- SetDetail(Element.Detail);
- UpdateIsPresented();
- }
-
- OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing || _disposed)
- return;
-
- _disposed = true;
-
- PageController?.SendDisappearing();
- SetElement(null);
- }
-
- protected void OnElementChanged(VisualElementChangedEventArgs e)
- {
- EventHandler<VisualElementChangedEventArgs> changed = ElementChanged;
- if (changed != null)
- changed(this, e);
- }
-
- protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == "Master")
- SetMaster(Element.Master);
- else if (e.PropertyName == "Detail")
- SetDetail(Element.Detail);
- else if (e.PropertyName == MasterDetailPage.IsPresentedProperty.PropertyName)
- UpdateIsPresented();
- else if (e.PropertyName == MasterDetailPage.MasterBehaviorProperty.PropertyName)
- {
- UpdateBehavior();
- UpdateIsPresented();
- }
- else if (e.PropertyName == Page.TitleProperty.PropertyName)
- UpdateTitle();
- }
-
- bool GetIsMasterAPopover()
- {
- // TODO: Support tablet being shrunk to a very small size
- return !Element.ShouldShowSplitMode;
- }
-
- void OnLoaded(object sender, RoutedEventArgs args)
- {
- PageController?.SendAppearing();
- }
-
- void OnNativeSizeChanged(object sender, SizeChangedEventArgs e)
- {
- UpdateBounds(e.NewSize);
- }
-
- void OnUnloaded(object sender, RoutedEventArgs args)
- {
- PageController?.SendDisappearing();
- }
-
- void OnUserClosedPopover(object sender, EventArgs e)
- {
- if (Element != null)
- ((IElementController)Element).SetValueFromRenderer(MasterDetailPage.IsPresentedProperty, false);
- }
-
- void SetDetail(Page detailPage)
- {
- ((ITitleProvider)this).ShowTitle = detailPage is NavigationPage;
-
- if (_detailRenderer != null)
- {
- FrameworkElement native = _detailRenderer.ContainerElement;
- _container.DetailContent = null;
- _detailRenderer = null;
- }
-
- if (detailPage == null)
- return;
-
- _detailRenderer = detailPage.GetOrCreateRenderer();
- _container.DetailContent = _detailRenderer.ContainerElement;
- UpdateTitle();
- }
-
- void SetMaster(Page masterPage)
- {
- if (_masterRenderer != null)
- {
- FrameworkElement native = _masterRenderer.ContainerElement;
- _container.MasterContent = null;
- _masterRenderer = null;
- }
-
- if (masterPage == null)
- return;
-
- _masterRenderer = masterPage.GetOrCreateRenderer();
- _container.MasterContent = _masterRenderer.ContainerElement;
- }
-
- void UpdateBehavior()
- {
- string key = GetIsMasterAPopover() ? "MasterDetailPopup" : "MasterDetailSplit";
- _container.Template = (Windows.UI.Xaml.Controls.ControlTemplate)Windows.UI.Xaml.Application.Current.Resources[key];
- }
-
- void UpdateBounds(bool isPresented)
- {
- UpdateBounds(new Windows.Foundation.Size(_container.ActualWidth, _container.ActualHeight), isPresented);
- }
-
- void UpdateBounds(Windows.Foundation.Size constraint)
- {
- UpdateBounds(constraint, Element.IsPresented);
- }
-
- void UpdateBounds(Windows.Foundation.Size constraint, bool isPresented)
- {
- if (constraint.Width <= 0 || constraint.Height <= 0)
- return;
-
- bool isPopover = GetIsMasterAPopover();
- double masterWidth = 0;
- if (isPresented || isPopover)
- {
- if (isPopover && IsPopoverFullScreen)
- masterWidth = constraint.Width;
- else
- masterWidth = constraint.Width * .3;
- }
-
- double detailWidth = constraint.Width;
- if (!isPopover)
- detailWidth -= masterWidth;
-
- Element.MasterBounds = new Rectangle(0, 0, masterWidth, constraint.Height);
- Element.DetailBounds = new Rectangle(0, 0, detailWidth, constraint.Height);
- }
-
- void UpdateIsPresented()
- {
- // Ignore the IsPresented value being set to false for Split mode on desktop and allow the master
- // view to be made initially visible
- if ((Device.Idiom == TargetIdiom.Desktop || Device.Idiom == TargetIdiom.Tablet) && _container.IsMasterVisible && !Element.IsPresented && Element.MasterBehavior != MasterBehavior.Popover)
- return;
-
- UpdateBehavior();
-
- bool isPresented = !GetIsMasterAPopover() || Element.IsPresented;
- _container.IsMasterVisible = isPresented;
-
- UpdateBounds(isPresented);
- }
-
- void UpdateTitle()
- {
- if (Element?.Detail == null)
- return;
-
- ((ITitleProvider)this).Title = (Element.Detail as NavigationPage)?.CurrentPage?.Title ?? Element.Title ?? Element?.Title;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-namespace Xamarin.Forms.Platform.WinRT
-{
- public partial class NavigationPageRenderer
- {
- void UpdateShowTitle()
- {
- if (Device.Idiom == TargetIdiom.Phone && _parentTabbedPage != null)
- ((ITitleProvider)this).ShowTitle = false;
- else
- ((ITitleProvider)this).ShowTitle = true;
- }
-
- static object GetDefaultColor()
- {
- return Windows.UI.Xaml.Application.Current.Resources["ApplicationPageBackgroundThemeBrush"];
- }
-
- void UpdateBackButton()
- {
- bool showBackButton = Element.InternalChildren.Count > 1 && NavigationPage.GetHasBackButton(_currentPage);
- _container.ShowBackButton = showBackButton;
- }
-
- void UpdateToolbarPlacement()
- {
- // Currently we don't support toolbar (CommandBar) placement on Windows 8.1
- }
-
- void UpdateTitleOnParents()
- {
- if (Element == null)
- return;
-
- ITitleProvider render = null;
- if (_parentTabbedPage != null)
- {
- render = Platform.GetRenderer(_parentTabbedPage) as ITitleProvider;
- if (render != null)
- render.ShowTitle = (_parentTabbedPage.CurrentPage == Element) && NavigationPage.GetHasNavigationBar(_currentPage);
- }
-
- if (_parentMasterDetailPage != null)
- {
- render = Platform.GetRenderer(_parentMasterDetailPage) as ITitleProvider;
- if (render != null)
- render.ShowTitle = (_parentMasterDetailPage.Detail == Element) && NavigationPage.GetHasNavigationBar(_currentPage);
- }
-
- if (render != null && render.ShowTitle)
- {
- render.Title = _currentPage.Title;
- render.BarBackgroundBrush = GetBarBackgroundBrush();
- render.BarForegroundBrush = GetBarForegroundBrush();
- }
- }
- }
-}
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Windows.UI;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Media.Animation;
-using Xamarin.Forms.Internals;
-
-namespace Xamarin.Forms.Platform.WinRT
-{
- public abstract partial class Platform
- {
- ActionSheetArguments _actionSheetOptions;
- Popup _currentActionSheet;
-
- CommandBar AddOpenMasterButton(CommandBar commandBar)
- {
- if (!_toolbarTracker.HaveMasterDetail)
- {
- return commandBar;
- }
-
- if (commandBar == null)
- {
- commandBar = CreateCommandBar();
- }
-
- Page target = _toolbarTracker.Target;
- var mdp = target as MasterDetailPage;
- while (mdp == null)
- {
- var container = target as IPageContainer<Page>;
- if (container == null)
- {
- break;
- }
-
- target = container.CurrentPage;
- mdp = container.CurrentPage as MasterDetailPage;
- }
-
- if (mdp == null || !mdp.ShouldShowToolbarButton())
- {
- return commandBar;
- }
-
- var openMaster = new AppBarButton { DataContext = mdp };
- openMaster.SetBinding(AppBarButton.LabelProperty, "Master.Title");
- openMaster.SetBinding(AppBarButton.IconProperty, "Master.Icon", _fileImageSourcePathConverter);
- openMaster.Click += (s, a) => { mdp.IsPresented = !mdp.IsPresented; };
-
- commandBar.PrimaryCommands.Add(openMaster);
-
- return commandBar;
- }
-
- CommandBar CreateCommandBar()
- {
- var commandBar = new CommandBar();
- _page.BottomAppBar = commandBar;
- return commandBar;
- }
-
- void UpdateBounds()
- {
- _bounds = new Rectangle(0, 0, _page.ActualWidth, _page.ActualHeight);
- }
-
- Task<CommandBar> GetCommandBarAsync()
- {
- return Task.FromResult(_page.BottomAppBar as CommandBar);
- }
-
- void ClearCommandBar()
- {
- _page.BottomAppBar = null;
- }
-
- internal void SubscribeAlertsAndActionSheets()
- {
- MessagingCenter.Subscribe<Page, AlertArguments>(this, Page.AlertSignalName, OnPageAlert);
- MessagingCenter.Subscribe<Page, ActionSheetArguments>(this, Page.ActionSheetSignalName, OnPageActionSheet);
- }
-
- void OnPageActionSheet(Page sender, ActionSheetArguments options)
- {
- var finalArguments = new List<string>();
- if (options.Destruction != null)
- finalArguments.Add(options.Destruction);
- if (options.Buttons != null)
- finalArguments.AddRange(options.Buttons);
- if (options.Cancel != null)
- finalArguments.Add(options.Cancel);
-
- var list = new Windows.UI.Xaml.Controls.ListView
- {
- Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["ActionSheetList"],
- ItemsSource = finalArguments,
- IsItemClickEnabled = true
- };
-
- list.ItemClick += (s, e) =>
- {
- _currentActionSheet.IsOpen = false;
- options.SetResult((string)e.ClickedItem);
- };
-
- _actionSheetOptions = options;
-
- Size size = Device.Info.ScaledScreenSize;
-
- var stack = new StackPanel
- {
- MinWidth = 100,
- Children =
- {
- new TextBlock
- {
- Text = options.Title ?? string.Empty,
- Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TitleTextBlockStyle"],
- Margin = new Windows.UI.Xaml.Thickness(0, 0, 0, 10),
- Visibility = options.Title != null ? Visibility.Visible : Visibility.Collapsed
- },
- list
- }
- };
-
- var border = new Border
- {
- Child = stack,
- BorderBrush = new SolidColorBrush(Colors.White),
- BorderThickness = new Windows.UI.Xaml.Thickness(1),
- Padding = new Windows.UI.Xaml.Thickness(15),
- Background = (Brush)Windows.UI.Xaml.Application.Current.Resources["AppBarBackgroundThemeBrush"]
- };
-
- Windows.UI.Xaml.Controls.Grid.SetRow(border, 1);
- Windows.UI.Xaml.Controls.Grid.SetColumn(border, 1);
-
- var container = new Windows.UI.Xaml.Controls.Grid
- {
- RowDefinitions =
- {
- new Windows.UI.Xaml.Controls.RowDefinition { Height = new Windows.UI.Xaml.GridLength(1, Windows.UI.Xaml.GridUnitType.Star) },
- new Windows.UI.Xaml.Controls.RowDefinition { Height = new Windows.UI.Xaml.GridLength(0, Windows.UI.Xaml.GridUnitType.Auto) },
- new Windows.UI.Xaml.Controls.RowDefinition { Height = new Windows.UI.Xaml.GridLength(1, Windows.UI.Xaml.GridUnitType.Star) }
- },
- ColumnDefinitions =
- {
- new Windows.UI.Xaml.Controls.ColumnDefinition { Width = new Windows.UI.Xaml.GridLength(1, Windows.UI.Xaml.GridUnitType.Star) },
- new Windows.UI.Xaml.Controls.ColumnDefinition { Width = new Windows.UI.Xaml.GridLength(0, Windows.UI.Xaml.GridUnitType.Auto) },
- new Windows.UI.Xaml.Controls.ColumnDefinition { Width = new Windows.UI.Xaml.GridLength(1, Windows.UI.Xaml.GridUnitType.Star) }
- },
- Height = size.Height,
- Width = size.Width,
- Children = { border }
- };
-
- var bgPopup = new Popup { Child = new Canvas { Width = size.Width, Height = size.Height, Background = new SolidColorBrush(new Windows.UI.Color { A = 128, R = 0, G = 0, B = 0 }) } };
-
- bgPopup.IsOpen = true;
-
- _currentActionSheet = new Popup { ChildTransitions = new TransitionCollection { new PopupThemeTransition() }, IsLightDismissEnabled = true, Child = container };
-
- _currentActionSheet.Closed += (s, e) =>
- {
- bgPopup.IsOpen = false;
- CancelActionSheet();
- };
-
- if (Device.Idiom == TargetIdiom.Phone)
- {
- double height = _page.ActualHeight;
- stack.Height = height;
- stack.Width = size.Width;
- border.BorderThickness = new Windows.UI.Xaml.Thickness(0);
-
- _currentActionSheet.Height = height;
- _currentActionSheet.VerticalOffset = size.Height - height;
- }
-
- _currentActionSheet.IsOpen = true;
- }
-
- void CancelActionSheet()
- {
- if (_currentActionSheet == null)
- return;
-
- _actionSheetOptions.SetResult(null);
- _actionSheetOptions = null;
- _currentActionSheet.IsOpen = false;
- _currentActionSheet = null;
- }
-
- internal async Task UpdateToolbarItems()
- {
- CommandBar commandBar = await GetCommandBarAsync();
- if (commandBar != null)
- {
- commandBar.PrimaryCommands.Clear();
- commandBar.SecondaryCommands.Clear();
- }
-
- commandBar = AddOpenMasterButton(commandBar);
-
- foreach (ToolbarItem item in _toolbarTracker.ToolbarItems.OrderBy(ti => ti.Priority))
- {
- if (commandBar == null)
- commandBar = CreateCommandBar();
-
- var button = new AppBarButton();
- button.SetBinding(AppBarButton.LabelProperty, "Text");
- button.SetBinding(AppBarButton.IconProperty, "Icon", _fileImageSourcePathConverter);
- button.Command = new MenuItemCommand(item);
- button.DataContext = item;
-
- ToolbarItemOrder order = item.Order == ToolbarItemOrder.Default ? ToolbarItemOrder.Primary : item.Order;
- if (order == ToolbarItemOrder.Primary)
- commandBar.PrimaryCommands.Add(button);
- else
- commandBar.SecondaryCommands.Add(button);
- }
-
- if (commandBar?.PrimaryCommands.Count + commandBar?.SecondaryCommands.Count == 0)
- ClearCommandBar();
- }
- }
-}
+++ /dev/null
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using Xamarin.Forms;
-using Xamarin.Forms.Platform.WinRT;
-
-[assembly: AssemblyTitle("Xamarin.Forms.Platform.WinRT")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WinRT.Tablet")]
-[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.WinRT.Phone")]
-[assembly: Dependency(typeof(WindowsSerializer))]
-
-// Views
-
-[assembly: ExportRenderer(typeof(Layout), typeof(LayoutRenderer))]
-[assembly: ExportRenderer(typeof(BoxView), typeof(BoxViewRenderer))]
-[assembly: ExportRenderer(typeof(Image), typeof(ImageRenderer))]
-[assembly: ExportRenderer(typeof(Label), typeof(LabelRenderer))]
-[assembly: ExportRenderer(typeof(Button), typeof(ButtonRenderer))]
-[assembly: ExportRenderer(typeof(ListView), typeof(ListViewRenderer))]
-[assembly: ExportRenderer(typeof(ScrollView), typeof(ScrollViewRenderer))]
-[assembly: ExportRenderer(typeof(ProgressBar), typeof(ProgressBarRenderer))]
-[assembly: ExportRenderer(typeof(Slider), typeof(SliderRenderer))]
-[assembly: ExportRenderer(typeof(Switch), typeof(SwitchRenderer))]
-[assembly: ExportRenderer(typeof(WebView), typeof(WebViewRenderer))]
-[assembly: ExportRenderer(typeof(Frame), typeof(FrameRenderer))]
-[assembly: ExportRenderer(typeof(ActivityIndicator), typeof(ActivityIndicatorRenderer))]
-[assembly: ExportRenderer(typeof(Editor), typeof(EditorRenderer))]
-[assembly: ExportRenderer(typeof(Picker), typeof(PickerRenderer))]
-[assembly: ExportRenderer(typeof(TimePicker), typeof(TimePickerRenderer))]
-[assembly: ExportRenderer(typeof(DatePicker), typeof(DatePickerRenderer))]
-[assembly: ExportRenderer(typeof(Stepper), typeof(StepperRenderer))]
-[assembly: ExportRenderer(typeof(Entry), typeof(EntryRenderer))]
-[assembly: ExportRenderer(typeof(TableView), typeof(TableViewRenderer))]
-[assembly: ExportRenderer(typeof(NativeViewWrapper), typeof(NativeViewWrapperRenderer))]
-
-//ImageSources
-
-[assembly: ExportImageSourceHandler(typeof(FileImageSource), typeof(FileImageSourceHandler))]
-[assembly: ExportImageSourceHandler(typeof(StreamImageSource), typeof(StreamImageSourceHandler))]
-[assembly: ExportImageSourceHandler(typeof(UriImageSource), typeof(UriImageSourceHandler))]
-
-// Pages
-
-[assembly: ExportRenderer(typeof(Page), typeof(PageRenderer))]
-[assembly: ExportRenderer(typeof(NavigationPage), typeof(NavigationPageRenderer))]
-[assembly: ExportRenderer(typeof(MasterDetailPage), typeof(MasterDetailPageRenderer))]
-[assembly: ExportRenderer(typeof(CarouselPage), typeof(CarouselPageRenderer))]
-
-// Cells
-
-[assembly: ExportCell(typeof(Cell), typeof(TextCellRenderer))]
-[assembly: ExportCell(typeof(ImageCell), typeof(ImageCellRenderer))]
-[assembly: ExportCell(typeof(EntryCell), typeof(EntryCellRenderer))]
-[assembly: ExportCell(typeof(SwitchCell), typeof(SwitchCellRenderer))]
-[assembly: ExportCell(typeof(ViewCell), typeof(ViewCellRenderer))]
\ No newline at end of file
+++ /dev/null
-<ResourceDictionary
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:forms="using:Xamarin.Forms.Platform.WinRT">
-
- <forms:CaseConverter x:Key="LowerConverter" ConvertToUpper="False" />
- <forms:CaseConverter x:Key="UpperConverter" ConvertToUpper="True" />
- <forms:HeightConverter x:Key="HeightConverter" />
- <forms:CollapseWhenEmptyConverter x:Key="CollapseWhenEmpty" />
- <forms:BoolToVisibilityConverter x:Key="BoolVisibilityConverter" />
- <forms:PageToRenderedElementConverter x:Key="PageToRenderer" />
- <forms:ImageConverter x:Key="ImageConverter" />
- <forms:ViewToRendererConverter x:Key="ViewToRenderer" />
- <forms:ColorConverter x:Key="ColorConverter" />
- <forms:HorizontalTextAlignmentConverter x:Key="HorizontalTextAlignmentConverter" />
- <forms:KeyboardConverter x:Key="KeyboardConverter" />
- <forms:MasterBackgroundConverter x:Key="MasterBackgroundConverter" />
-
- <Style x:Key="RootContainerStyle" TargetType="Canvas">
- <Setter Property="Background" Value="{ThemeResource ApplicationPageBackgroundThemeBrush}" />
- </Style>
-
- <Style x:Key="ActionSheetList" TargetType="ListView">
- <Setter Property="SelectionMode" Value="None" />
- <Setter Property="ItemContainerStyle">
- <Setter.Value>
- <Style TargetType="ListViewItem">
- <Setter Property="Margin" Value="0" />
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- </Style>
- </Setter.Value>
- </Setter>
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Center" Style="{ThemeResource SubheaderTextBlockStyle}" />
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="CellTemplate">
- <forms:CellControl HorizontalContentAlignment="Stretch" Height="{Binding Cell.RenderHeight,RelativeSource={RelativeSource Mode=Self},Converter={StaticResource HeightConverter}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="TableRoot">
- <TextBlock Margin="0,20,0,0" Text="{Binding Title,Converter={StaticResource LowerConverter}}" Style="{ThemeResource HeaderTextBlockStyle}" Visibility="{Binding Text,RelativeSource={RelativeSource Mode=Self},Converter={StaticResource CollapseWhenEmpty}}" />
- </DataTemplate>
-
- <DataTemplate x:Key="TableSection">
- <TextBlock Margin="0,20,0,0" Text="{Binding Title,Converter={StaticResource LowerConverter}}" Style="{ThemeResource SubheaderTextBlockStyle}" Visibility="{Binding Text,RelativeSource={RelativeSource Mode=Self},Converter={StaticResource CollapseWhenEmpty}}" />
- </DataTemplate>
-
- <forms:ListViewGroupStyleSelector x:Key="ListViewGroupSelector" />
-
- <DataTemplate x:Key="ViewCell">
- <ContentControl DataContext="{Binding Cell}">
- <ContentPresenter Height="{Binding RenderHeight, Converter={StaticResource HeightConverter}}" Content="{Binding View, Converter={StaticResource ViewToRenderer}}" />
- </ContentControl>
- </DataTemplate>
-
- <DataTemplate x:Key="ContainedPageTemplate">
- <ContentPresenter Content="{Binding Converter={StaticResource PageToRenderer}}">
- <ContentPresenter.Resources>
- <Style TargetType="forms:PageControl">
- <Setter Property="Background" Value="Transparent" />
- </Style>
- </ContentPresenter.Resources>
- </ContentPresenter>
- </DataTemplate>
-
- <DataTemplate x:Key="View">
- <ContentPresenter Content="{Binding Converter={StaticResource ViewToRenderer}}" />
- </DataTemplate>
-
- <Style TargetType="TextBox">
- <Setter Property="Margin" Value="0" />
- </Style>
-
- <DataTemplate x:Key="PushPinTemplate">
- <Path Data="M 50.7361,983.661 C 44.1895,983.661 38.8369,988.97 38.8369,995.517 39.8649,1003.3 45.246,1008.1 49.8547,1014.12 50.2838,1014.66 51.2336,1014.66 51.6619,1014.12 52.1384,1013.48 52.7575,1012.73 53.4248,1011.91 55.0322,1012.07 56.4727,1012.32 57.5676,1012.71 58.407,1013 59.06,1013.33 59.4192,1013.63 59.7784,1013.93 59.7716,1014.11 59.7716,1014.16 59.7716,1014.21 59.7716,1014.39 59.4192,1014.69 59.06,1014.99 58.407,1015.32 57.5676,1015.61 55.8888,1016.2 53.4519,1016.63 50.7361,1016.63 48.0204,1016.63 45.5399,1016.2 43.8611,1015.61 43.0218,1015.32 42.3695,1014.99 42.0103,1014.69 41.6504,1014.39 41.6135,1014.21 41.6135,1014.16 41.6135,1014.11 41.6511,1013.93 42.0103,1013.63 42.3695,1013.33 43.0218,1013 43.8611,1012.71 44.3158,1012.55 44.8455,1012.35 45.4039,1012.22 L 43.8611,1010.33 C 43.6124,1010.4 43.3441,1010.46 43.1119,1010.55 42.1005,1010.9 41.2318,1011.31 40.5555,1011.87 39.8799,1012.43 39.3216,1013.22 39.3216,1014.16 39.3216,1015.1 39.8799,1015.85 40.5555,1016.41 41.2318,1016.97 42.1005,1017.42 43.1119,1017.77 45.1356,1018.48 47.8025,1018.92 50.7362,1018.92 54.437,1018.81 57.9892,1018.36 60.8733,1016.41 62.5084,1014.79 62.0756,1013.4 60.8733,1011.87 60.1969,1011.31 59.3726,1010.9 58.3612,1010.55 57.4331,1010.22 56.3503,1009.94 55.1878,1009.75 56.1992,1008.51 57.2362,1007.18 58.2289,1005.79 60.5599,1002.51 62.5918,998.968 62.5918,995.517 62.5918,988.97 57.2836,983.661 50.7362,983.661 Z M 50.7361,989.655 C 47.571,989.655 44.9627,992.219 44.9627,995.385 44.9627,998.55 47.571,1001.16 50.7361,1001.16 53.902,1001.16 56.4659,998.55 56.4659,995.385 56.4659,992.219 53.902,989.655 50.7361,989.655 Z M 50.7361,991.947 C 52.6591,991.947 54.174,993.462 54.174,995.385 54.174,997.307 52.6591,998.866 50.7361,998.866 48.8139,998.866 47.2546,997.307 47.2546,995.385 47.2546,993.462 48.8139,991.947 50.7361,991.947 Z" Fill="#000000" />
- </DataTemplate>
-</ResourceDictionary>
\ No newline at end of file
+++ /dev/null
-using System;
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
-{
- public class VisualElementChangedEventArgs : ElementChangedEventArgs<VisualElement>
- {
- public VisualElementChangedEventArgs(VisualElement oldElement, VisualElement newElement) : base(oldElement, newElement)
- {
- }
- }
-
- public class ElementChangedEventArgs<TElement> : EventArgs where TElement : Element
- {
- public ElementChangedEventArgs(TElement oldElement, TElement newElement)
- {
- OldElement = oldElement;
- NewElement = newElement;
- }
-
- public TElement NewElement { get; private set; }
-
- public TElement OldElement { get; private set; }
- }
-}
\ No newline at end of file
+++ /dev/null
-<?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>
- <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{F3FDD7AC-8899-4E41-BFD7-EC83403E736D}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Platform.WinRT</RootNamespace>
- <AssemblyName>Xamarin.Forms.Platform.WinRT</AssemblyName>
- <DefaultLanguage>en-US</DefaultLanguage>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- </PropertyGroup>
- <Choose>
- <When Condition=" '$(OS)' != 'Unix' ">
- <PropertyGroup>
- <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
- <TargetFrameworkProfile>Profile32</TargetFrameworkProfile>
- </PropertyGroup>
- </When>
- <When Condition=" '$(OS)' == 'Unix' ">
- <PropertyGroup>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <TargetFrameworkProfile>Profile259</TargetFrameworkProfile>
- </PropertyGroup>
- </When>
- </Choose>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>
- </NoWarn>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .NET Framework is automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup Condition=" '$(OS)' != 'Unix' ">
- <TargetPlatform Include="WindowsPhoneApp, Version=8.1" />
- <TargetPlatform Include="Windows, Version=8.1" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs">
- <Link>Properties\GlobalAssemblyInfo.cs</Link>
- </Compile>
- <Compile Include="FlowDirectionExtensions.cs" />
- </ItemGroup>
- <ItemGroup Condition=" '$(OS)' != 'Unix' ">
- <Compile Include="PageControl.cs" />
- <Compile Include="NavigationPageRendererWinRT.cs" />
- <Compile Include="PlatformWinRT.cs" />
- <Compile Include="BrushHelpers.cs" />
- <Compile Include="NativeBindingExtensions.cs" />
- <Compile Include="NativeEventWrapper.cs" />
- <Compile Include="NativePropertyListener.cs" />
- <Compile Include="NativeViewWrapper.cs" />
- <Compile Include="NativeViewWrapperRenderer.cs" />
- <Compile Include="ViewExtensions.cs" />
- <Compile Include="LayoutExtensions.cs" />
- <Compile Include="PlatformEffect.cs" />
- <Compile Include="FormsComboBox.cs" />
- <Compile Include="FormsTextBox.cs" />
- <Compile Include="ITitleProvider.cs" />
- <Compile Include="IToolbarProvider.cs" />
- <Compile Include="FrameworkElementExtensions.cs" />
- <Compile Include="ActivityIndicatorRenderer.cs" />
- <Compile Include="AsyncValue.cs" />
- <Compile Include="BackgroundTracker.cs" />
- <Compile Include="BoolToVisibilityConverter.cs" />
- <Compile Include="ButtonRenderer.cs" />
- <Compile Include="CarouselPageRenderer.cs" />
- <Compile Include="CellControl.cs" />
- <Compile Include="CollapseWhenEmptyConverter.cs" />
- <Compile Include="ColorConverter.cs" />
- <Compile Include="ConvertExtensions.cs" />
- <Compile Include="DatePickerRenderer.cs" />
- <Compile Include="DefaultRenderer.cs" />
- <Compile Include="EditorRenderer.cs" />
- <Compile Include="EntryCellTextBox.cs" />
- <Compile Include="EntryRenderer.cs" />
- <Compile Include="ExportRendererAttribute.cs" />
- <Compile Include="FileImageSourcePathConverter.cs" />
- <Compile Include="FormsButton.cs" />
- <Compile Include="FormsProgressBar.cs" />
- <Compile Include="FrameRenderer.cs" />
- <Compile Include="ImageConverter.cs" />
- <Compile Include="KeyboardConverter.cs" />
- <Compile Include="KeyboardExtensions.cs" />
- <Compile Include="ListGroupHeaderPresenter.cs" />
- <Compile Include="ListViewGroupStyleSelector.cs" />
- <Compile Include="MasterBackgroundConverter.cs" />
- <Compile Include="MasterDetailControl.cs" />
- <Compile Include="MasterDetailPageRenderer.cs" />
- <Compile Include="MenuItemCommand.cs" />
- <Compile Include="PageToRenderedElementConverter.cs" />
- <Compile Include="PickerRenderer.cs" />
- <Compile Include="StepperControl.xaml.cs">
- <DependentUpon>StepperControl.xaml</DependentUpon>
- </Compile>
- <Compile Include="StepperRenderer.cs" />
- <Compile Include="TableViewRenderer.cs" />
- <Compile Include="TimePickerRenderer.cs" />
- <Compile Include="ViewToRendererConverter.cs" />
- <Compile Include="VisualElementExtensions.cs" />
- <Compile Include="Extensions.cs" />
- <Compile Include="FileImageSourceHandler.cs" />
- <Compile Include="FontExtensions.cs" />
- <Compile Include="HeightConverter.cs" />
- <Compile Include="ICellRenderer.cs" />
- <Compile Include="IImageSourceHandler.cs" />
- <Compile Include="UriImageSourceHandler.cs" />
- <Compile Include="ImageRenderer.cs" />
- <Compile Include="IVisualElementRenderer.cs" />
- <Compile Include="LabelRenderer.cs" />
- <Compile Include="CaseConverter.cs" />
- <Compile Include="ListViewRenderer.cs" />
- <Compile Include="NavigationPageRenderer.cs" />
- <Compile Include="Platform.cs" />
- <Compile Include="ProgressBarRenderer.cs" />
- <Compile Include="RendererFactory.cs" />
- <Compile Include="BoxViewRenderer.cs" />
- <Compile Include="LayoutRenderer.cs" />
- <Compile Include="PageRenderer.cs" />
- <Compile Include="ScrollViewRenderer.cs" />
- <Compile Include="SliderRenderer.cs" />
- <Compile Include="StreamImagesourceHandler.cs" />
- <Compile Include="SwitchRenderer.cs" />
- <Compile Include="TaskExtensions.cs" />
- <Compile Include="TextCellRenderer.cs" />
- <Compile Include="ViewRenderer.cs" />
- <Compile Include="VisualElementPackager.cs" />
- <Compile Include="VisualElementRenderer.cs" />
- <Compile Include="VisualElementTracker.cs" />
- <Compile Include="WebViewRenderer.cs" />
- <Compile Include="WindowsBasePage.cs" />
- <Compile Include="WindowsExpressionSearch.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="WindowsDeviceInfo.cs" />
- <Compile Include="WindowsIsolatedStorage.cs" />
- <Compile Include="WindowsBasePlatformServices.cs" />
- <Compile Include="WindowsSerializer.cs" />
- <Compile Include="WindowsTicker.cs" />
- <Compile Include="VisualElementChangedEventArgs.cs" />
- <Compile Include="HorizontalTextAlignmentConverter.cs" />
- <Compile Include="AlignmentExtensions.cs" />
- <Compile Include="TextAlignmentToHorizontalAlignmentConverter.cs" />
- <Compile Include="..\Xamarin.Forms.Platform.UAP\NativeBindingService.cs">
- <Link>NativeBindingService.cs</Link>
- </Compile>
- <Compile Include="..\Xamarin.Forms.Platform.UAP\NativeValueConverterService.cs">
- <Link>NativeValueConverterService.cs</Link>
- </Compile>
- <Compile Include="PlatformConfigurationExtensions.cs" />
- <Page Include="StepperControl.xaml">
- <Generator>MSBuild:Compile</Generator>
- <SubType>Designer</SubType>
- </Page>
- </ItemGroup>
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.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
button = new Button ().LoadFromXaml (xaml);
Assert.AreEqual (44, button.HeightRequest);
- ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.WinPhone;
+ ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.UWP;
button = new Button ().LoadFromXaml (xaml);
Assert.AreEqual (44, button.HeightRequest);
}
layout = new ContentPage ().LoadFromXaml (xaml);
Assert.AreEqual (new Thickness (0, 0, 10, 0), layout.Padding);
- ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.WinPhone;
+ ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = Device.UWP;
layout = new ContentPage ().LoadFromXaml (xaml);
Assert.AreEqual (new Thickness (0, 20, 0, 20), layout.Padding);
}
if (targetPlatform != Device.RuntimePlatform)
{
// Special case for Windows backward compatibility
- if (targetPlatform == "Windows" &&
- (Device.RuntimePlatform == Device.UWP || Device.RuntimePlatform == Device.WinRT))
+ if (targetPlatform == "Windows" && Device.RuntimePlatform == Device.UWP)
continue;
prefixes.Add(prefix);
.nuspec\Xamarin.Forms.DefaultItems.props = .nuspec\Xamarin.Forms.DefaultItems.props
.nuspec\Xamarin.Forms.DefaultItems.targets = .nuspec\Xamarin.Forms.DefaultItems.targets
.nuspec\Xamarin.Forms.Maps.nuspec = .nuspec\Xamarin.Forms.Maps.nuspec
- .nuspec\Xamarin.Forms.Maps.props = .nuspec\Xamarin.Forms.Maps.props
- .nuspec\Xamarin.Forms.Maps.targets = .nuspec\Xamarin.Forms.Maps.targets
.nuspec\Xamarin.Forms.nuspec = .nuspec\Xamarin.Forms.nuspec
.nuspec\Xamarin.Forms.Pages.Azure.nuspec = .nuspec\Xamarin.Forms.Pages.Azure.nuspec
.nuspec\Xamarin.Forms.Pages.nuspec = .nuspec\Xamarin.Forms.Pages.nuspec
.nuspec\Xamarin.Forms.targets = .nuspec\Xamarin.Forms.targets
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WP8", "Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8.csproj", "{517B6AE0-792B-4665-9376-5CA33E539181}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.WP8", "Xamarin.Forms.ControlGallery.WP8\Xamarin.Forms.ControlGallery.WP8.csproj", "{67F3837C-C663-4668-9CD3-5E6C5ABD59B8}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core", "Xamarin.Forms.Core\Xamarin.Forms.Core.csproj", "{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Xaml", "Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj", "{9DB2F292-8034-4E06-89AD-98BBDA4306B9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.iOS", "Xamarin.Forms.Maps.iOS\Xamarin.Forms.Maps.iOS.csproj", "{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.WP8", "Xamarin.Forms.Maps.WP8\Xamarin.Forms.Maps.WP8.csproj", "{9222D2B8-63A4-4A36-A80E-BC34F27E0951}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.Android", "Xamarin.Forms.Maps.Android\Xamarin.Forms.Maps.Android.csproj", "{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UITests", "UITests", "{D4D57221-71D6-4031-A6F4-EC66AF0929D9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.iOS (Forwarders)", "Stubs\Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS (Forwarders).csproj", "{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WP8 (Forwarders)", "Stubs\Xamarin.Forms.Platform.WP8\Xamarin.Forms.Platform.WP8 (Forwarders).csproj", "{483CDAE7-4353-4AB2-9C20-145A9F148FAD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WinRT", "Xamarin.Forms.Platform.WinRT\Xamarin.Forms.Platform.WinRT.csproj", "{F3FDD7AC-8899-4E41-BFD7-EC83403E736D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.Windows", "Xamarin.Forms.ControlGallery.Windows\Xamarin.Forms.ControlGallery.Windows.csproj", "{1251646E-7FC6-425C-9464-A35DF1FC8E4D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WinRT.Tablet", "Xamarin.Forms.Platform.WinRT.Tablet\Xamarin.Forms.Platform.WinRT.Tablet.csproj", "{D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.WinRT.Phone", "Xamarin.Forms.Platform.WinRT.Phone\Xamarin.Forms.Platform.WinRT.Phone.csproj", "{3361D52C-2E74-433E-8285-9C9A5C485977}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.WindowsPhone", "Xamarin.Forms.ControlGallery.WindowsPhone\Xamarin.Forms.ControlGallery.WindowsPhone.csproj", "{8CDEC974-E6BE-4424-BC77-0B87400A08AF}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Controls.Issues", "Xamarin.Forms.Controls.Issues", "{B2927DF0-F98E-45C8-A917-27941B2B6838}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Controls.Issues.Shared", "Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.shproj", "{0F0DB9CC-EA65-429C-9363-38624BF8F49C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.UWP", "Xamarin.Forms.Maps.UWP\Xamarin.Forms.Maps.UWP.csproj", "{04D89A60-78EF-4A32-AE17-87E47E0233A5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.WinRT.Phone", "Xamarin.Forms.Maps.WinRT.Phone\Xamarin.Forms.Maps.WinRT.Phone.csproj", "{2633AF57-F2CB-442A-AC19-F97BD8A06571}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.WinRT.Tablet", "Xamarin.Forms.Maps.WinRT.Tablet\Xamarin.Forms.Maps.WinRT.Tablet.csproj", "{E5C4698D-FB57-4EEC-98C0-89E620F6920A}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Windows.UITests", "Xamarin.Forms.Core.Windows.UITests\Xamarin.Forms.Core.Windows.UITests.csproj", "{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Pages", "Xamarin.Forms.Pages\Xamarin.Forms.Pages.csproj", "{D6133DBD-6C60-4BD5-BEA2-07E0A3927C31}"
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.Build.0 = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.AppStore|x86.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.Build.0 = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {00259593-A283-47A5-ACB7-9C3819B16364}.AppStore|x86.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.Build.0 = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.AppStore|x86.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Deploy.0 = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {D597E3C6-1A50-4042-99FA-3E7CE28E4819}.AppStore|x86.ActiveCfg = Release|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Release|x64.Build.0 = Release|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Release|x86.ActiveCfg = Release|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819}.Release|x86.Build.0 = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {4B14D295-C09B-4C38-B880-7CC768E50585}.AppStore|x86.ActiveCfg = Release|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Debug|ARM.ActiveCfg = Debug|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x64.Build.0 = Release|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x86.ActiveCfg = Release|Any CPU
{4B14D295-C09B-4C38-B880-7CC768E50585}.Release|x86.Build.0 = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.AppStore|x86.ActiveCfg = Release|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Release|x64.Build.0 = Release|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Release|x86.ActiveCfg = Release|Any CPU
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF}.Release|x86.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|ARM.ActiveCfg = Debug|ARM
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|ARM.Build.0 = Debug|ARM
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|x64.ActiveCfg = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|x64.Build.0 = Debug|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|x86.ActiveCfg = Debug|x86
- {517B6AE0-792B-4665-9376-5CA33E539181}.Debug|x86.Build.0 = Debug|x86
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|Any CPU.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|ARM.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|ARM.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|iPhone.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|iPhone.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|Templates.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|x64.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|x64.Build.0 = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|x86.ActiveCfg = Release|Any CPU
- {517B6AE0-792B-4665-9376-5CA33E539181}.Release|x86.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|ARM.ActiveCfg = Debug|ARM
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|ARM.Build.0 = Debug|ARM
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|ARM.Deploy.0 = Debug|ARM
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x64.Build.0 = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x64.Deploy.0 = Debug|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x86.ActiveCfg = Debug|x86
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x86.Build.0 = Debug|x86
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Debug|x86.Deploy.0 = Debug|x86
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|Any CPU.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|ARM.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|ARM.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|ARM.Deploy.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhone.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhone.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhone.Deploy.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|Templates.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x64.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x64.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x64.Deploy.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x86.ActiveCfg = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x86.Build.0 = Release|Any CPU
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8}.Release|x86.Deploy.0 = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.AppStore|x86.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.Build.0 = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {9DB2F292-8034-4E06-89AD-98BBDA4306B9}.AppStore|x86.ActiveCfg = Release|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x64.Build.0 = Release|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x86.ActiveCfg = Release|Any CPU
{9DB2F292-8034-4E06-89AD-98BBDA4306B9}.Release|x86.Build.0 = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.AppStore|x86.ActiveCfg = Release|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x64.Build.0 = Release|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x86.ActiveCfg = Release|Any CPU
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}.Release|x86.Build.0 = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.AppStore|x86.ActiveCfg = Release|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x64.Build.0 = Release|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x86.ActiveCfg = Release|Any CPU
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}.Release|x86.Build.0 = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {7D13BAC2-C6A4-416A-B07E-C169B199E52B}.AppStore|x86.ActiveCfg = Release|Any CPU
{7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D13BAC2-C6A4-416A-B07E-C169B199E52B}.Debug|ARM.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|ARM.ActiveCfg = Debug|ARM
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|ARM.Build.0 = Debug|ARM
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|x64.ActiveCfg = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|x64.Build.0 = Debug|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|x86.ActiveCfg = Debug|x86
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Debug|x86.Build.0 = Debug|x86
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|Any CPU.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|ARM.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|ARM.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|iPhone.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|iPhone.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|Templates.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|x64.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|x64.Build.0 = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|x86.ActiveCfg = Release|Any CPU
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951}.Release|x86.Build.0 = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.AppStore|x86.ActiveCfg = Release|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x64.Build.0 = Release|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x86.ActiveCfg = Release|Any CPU
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473}.Release|x86.Build.0 = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {3B72465B-ACAE-43AE-9327-10F372FE5F80}.AppStore|x86.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.AppStore|x86.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.Build.0 = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {A34EBE01-25BF-4E69-A2DC-2288DC625541}.AppStore|x86.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|Templates.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {4DCD0420-1168-4B77-86DB-6196EE4BD491}.AppStore|x86.ActiveCfg = Release|Any CPU
{4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DCD0420-1168-4B77-86DB-6196EE4BD491}.Debug|ARM.ActiveCfg = Debug|Any CPU
{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x64.Build.0 = Release|Any CPU
{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x86.ActiveCfg = Release|Any CPU
{39B3457F-01D8-43D0-8E84-D8C4F73CF48D}.Release|x86.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|x64.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Ad-Hoc|x86.Build.0 = Release|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|ARM.ActiveCfg = Release|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|ARM.Build.0 = Release|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|iPhone.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|Templates.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|x64.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|x64.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|x86.ActiveCfg = Release|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.AppStore|x86.Build.0 = Release|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|ARM.ActiveCfg = Debug|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|ARM.Build.0 = Debug|ARM
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|x64.Build.0 = Debug|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|x86.ActiveCfg = Debug|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Debug|x86.Build.0 = Debug|x86
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|Any CPU.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|ARM.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|ARM.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|iPhone.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|iPhone.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|Templates.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|x64.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|x64.Build.0 = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|x86.ActiveCfg = Release|Any CPU
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD}.Release|x86.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|x64.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Ad-Hoc|x86.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|ARM.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|ARM.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|iPhone.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|Templates.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|x64.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|x64.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|x86.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.AppStore|x86.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|ARM.Build.0 = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|x64.Build.0 = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Debug|x86.Build.0 = Debug|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|Any CPU.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|ARM.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|ARM.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|iPhone.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|iPhone.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|Templates.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|x64.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|x64.Build.0 = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|x86.ActiveCfg = Release|Any CPU
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D}.Release|x86.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|Templates.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x64.ActiveCfg = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x64.Build.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x64.Deploy.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x86.Build.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Ad-Hoc|x86.Deploy.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|ARM.ActiveCfg = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|ARM.Build.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|ARM.Deploy.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhone.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhone.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Templates.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|Templates.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x64.ActiveCfg = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x64.Build.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x64.Deploy.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x86.ActiveCfg = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x86.Build.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.AppStore|x86.Deploy.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|Any CPU.ActiveCfg = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|Any CPU.Build.0 = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|Any CPU.Deploy.0 = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|ARM.ActiveCfg = Debug|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|ARM.Build.0 = Debug|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|ARM.Deploy.0 = Debug|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|iPhone.ActiveCfg = Debug|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x64.ActiveCfg = Debug|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x64.Build.0 = Debug|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x64.Deploy.0 = Debug|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x86.ActiveCfg = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x86.Build.0 = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Debug|x86.Deploy.0 = Debug|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|Any CPU.ActiveCfg = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|Any CPU.Build.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|Any CPU.Deploy.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|ARM.ActiveCfg = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|ARM.Build.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|ARM.Deploy.0 = Release|ARM
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhone.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhone.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhone.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|Templates.ActiveCfg = Release|Any CPU
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x64.ActiveCfg = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x64.Build.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x64.Deploy.0 = Release|x64
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x86.ActiveCfg = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x86.Build.0 = Release|x86
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D}.Release|x86.Deploy.0 = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|x64.ActiveCfg = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|x64.Build.0 = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Ad-Hoc|x86.Build.0 = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|ARM.ActiveCfg = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|ARM.Build.0 = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|iPhone.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|Templates.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|x64.ActiveCfg = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|x64.Build.0 = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|x86.ActiveCfg = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.AppStore|x86.Build.0 = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|ARM.ActiveCfg = Debug|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|ARM.Build.0 = Debug|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|x64.ActiveCfg = Debug|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|x64.Build.0 = Debug|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|x86.ActiveCfg = Debug|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Debug|x86.Build.0 = Debug|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|Any CPU.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|ARM.ActiveCfg = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|ARM.Build.0 = Release|ARM
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|iPhone.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|iPhone.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|Templates.ActiveCfg = Release|Any CPU
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|x64.ActiveCfg = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|x64.Build.0 = Release|x64
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|x86.ActiveCfg = Release|x86
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF}.Release|x86.Build.0 = Release|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|x64.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Ad-Hoc|x86.Build.0 = Release|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|ARM.ActiveCfg = Release|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|ARM.Build.0 = Release|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|iPhone.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|Templates.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|x64.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|x64.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|x86.ActiveCfg = Release|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.AppStore|x86.Build.0 = Release|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|ARM.ActiveCfg = Debug|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|ARM.Build.0 = Debug|ARM
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|x64.Build.0 = Debug|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|x86.ActiveCfg = Debug|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Debug|x86.Build.0 = Debug|x86
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|Any CPU.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|ARM.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|ARM.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|iPhone.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|iPhone.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|Templates.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|x64.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|x64.Build.0 = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|x86.ActiveCfg = Release|Any CPU
- {3361D52C-2E74-433E-8285-9C9A5C485977}.Release|x86.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|Templates.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x64.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x86.Build.0 = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Ad-Hoc|x86.Deploy.0 = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|ARM.ActiveCfg = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|ARM.Build.0 = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|ARM.Deploy.0 = Release|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhone.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhone.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Templates.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|Templates.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x64.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x64.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x64.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x86.ActiveCfg = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x86.Build.0 = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.AppStore|x86.Deploy.0 = Release|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|ARM.ActiveCfg = Debug|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|ARM.Build.0 = Debug|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|ARM.Deploy.0 = Debug|ARM
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x64.ActiveCfg = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x64.Build.0 = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x64.Deploy.0 = Debug|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x86.ActiveCfg = Debug|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x86.Build.0 = Debug|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Debug|x86.Deploy.0 = Debug|x86
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|Any CPU.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|ARM.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|ARM.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|ARM.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhone.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhone.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhone.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|Templates.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x64.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x64.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x64.Deploy.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x86.ActiveCfg = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x86.Build.0 = Release|Any CPU
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF}.Release|x86.Deploy.0 = Release|Any CPU
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Ad-Hoc|Any CPU.Build.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
{04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x64.Build.0 = Release|x64
{04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x86.ActiveCfg = Release|Any CPU
{04D89A60-78EF-4A32-AE17-87E47E0233A5}.Release|x86.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|x64.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Ad-Hoc|x86.Build.0 = Release|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|ARM.ActiveCfg = Release|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|ARM.Build.0 = Release|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|iPhone.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|Templates.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|x64.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|x64.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|x86.ActiveCfg = Release|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.AppStore|x86.Build.0 = Release|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|ARM.ActiveCfg = Debug|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|ARM.Build.0 = Debug|ARM
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|Templates.Build.0 = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|x64.Build.0 = Debug|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|x86.ActiveCfg = Debug|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Debug|x86.Build.0 = Debug|x86
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|Any CPU.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|ARM.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|ARM.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|iPhone.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|iPhone.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|Templates.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|Templates.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|x64.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|x64.Build.0 = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|x86.ActiveCfg = Release|Any CPU
- {2633AF57-F2CB-442A-AC19-F97BD8A06571}.Release|x86.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|ARM.Build.0 = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|Templates.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|Templates.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|x64.ActiveCfg = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|x64.Build.0 = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|x86.ActiveCfg = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Ad-Hoc|x86.Build.0 = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|ARM.ActiveCfg = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|ARM.Build.0 = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|iPhone.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|Templates.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|Templates.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|x64.ActiveCfg = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|x64.Build.0 = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|x86.ActiveCfg = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.AppStore|x86.Build.0 = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|Any CPU.ActiveCfg = Debug|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|Any CPU.Build.0 = Debug|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|ARM.ActiveCfg = Debug|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|ARM.Build.0 = Debug|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|iPhone.ActiveCfg = Debug|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|iPhoneSimulator.ActiveCfg = Debug|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|Templates.ActiveCfg = Debug|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|Templates.Build.0 = Debug|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|x64.ActiveCfg = Debug|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|x64.Build.0 = Debug|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|x86.ActiveCfg = Debug|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Debug|x86.Build.0 = Debug|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|Any CPU.ActiveCfg = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|Any CPU.Build.0 = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|ARM.ActiveCfg = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|ARM.Build.0 = Release|ARM
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|iPhone.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|iPhone.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|Templates.ActiveCfg = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|Templates.Build.0 = Release|Any CPU
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|x64.ActiveCfg = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|x64.Build.0 = Release|x64
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|x86.ActiveCfg = Release|x86
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A}.Release|x86.Build.0 = Release|x86
{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
{D597E3C6-1A50-4042-99FA-3E7CE28E4819} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
{4B14D295-C09B-4C38-B880-7CC768E50585} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
{928A23F3-2330-4F9F-B6A3-BFE01FE2A2DF} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
- {517B6AE0-792B-4665-9376-5CA33E539181} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
- {67F3837C-C663-4668-9CD3-5E6C5ABD59B8} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{9DB2F292-8034-4E06-89AD-98BBDA4306B9} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7} = {32F608E2-6406-4DCF-9105-E2A7CB7085CF}
{7D13BAC2-C6A4-416A-B07E-C169B199E52B} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
- {9222D2B8-63A4-4A36-A80E-BC34F27E0951} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{BD50B39A-EBC5-408F-9C5E-923A8EBAE473} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{DC1F3933-AC99-4887-8B09-E13C2B346D4F} = {DDDFBCAF-93DE-4868-8296-FD909EF32EF7}
{3B72465B-ACAE-43AE-9327-10F372FE5F80} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{5A2DADBC-9510-4DD1-BE58-01501F2DF65D} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{6E53FEB1-1100-46AE-8013-17BBA35CC197} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D}
{39B3457F-01D8-43D0-8E84-D8C4F73CF48D} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D}
- {483CDAE7-4353-4AB2-9C20-145A9F148FAD} = {5A2DADBC-9510-4DD1-BE58-01501F2DF65D}
- {F3FDD7AC-8899-4E41-BFD7-EC83403E736D} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
- {1251646E-7FC6-425C-9464-A35DF1FC8E4D} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
- {D3F9265A-30AC-43E8-A3EB-59BB76D2D0BF} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
- {3361D52C-2E74-433E-8285-9C9A5C485977} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
- {8CDEC974-E6BE-4424-BC77-0B87400A08AF} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
{B2927DF0-F98E-45C8-A917-27941B2B6838} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
{0F0DB9CC-EA65-429C-9363-38624BF8F49C} = {B2927DF0-F98E-45C8-A917-27941B2B6838}
{AC257966-9368-478A-9DF4-F0D28E320FE3} = {4F5E2D21-17F6-4A42-B8FB-D03D82E24EC8}
{C4340D4E-BDDB-4053-BFBC-CF4F043FAE87} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{04D89A60-78EF-4A32-AE17-87E47E0233A5} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
- {2633AF57-F2CB-442A-AC19-F97BD8A06571} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
- {E5C4698D-FB57-4EEC-98C0-89E620F6920A} = {132FB9A4-613F-44CE-95D5-758D32D231DD}
{0A39A74B-6F7A-4D41-84F2-B0CCDCE899DF} = {D4D57221-71D6-4031-A6F4-EC66AF0929D9}
{D6133DBD-6C60-4BD5-BEA2-07E0A3927C31} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{447DC60E-C485-4427-8CF7-50074C6B61DE} = {33A20844-7EF4-441D-83DA-2ACAF5E1CDFA}
<remarks>To be added.</remarks>
</Docs>
</Member>
- <Member MemberName="WinPhone">
- <MemberSignature Language="C#" Value="public const string WinPhone;" />
- <MemberSignature Language="ILAsm" Value=".field public static literal string WinPhone" />
- <MemberType>Field</MemberType>
- <AssemblyInfo>
- <AssemblyVersion>2.0.0.0</AssemblyVersion>
- </AssemblyInfo>
- <ReturnValue>
- <ReturnType>System.String</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>The string "WinPhone", representing the Windows Mobile operating system.</summary>
- <remarks>To be added.</remarks>
- </Docs>
- </Member>
- <Member MemberName="WinRT">
- <MemberSignature Language="C#" Value="public const string WinRT;" />
- <MemberSignature Language="ILAsm" Value=".field public static literal string WinRT" />
- <MemberType>Field</MemberType>
- <AssemblyInfo>
- <AssemblyVersion>2.0.0.0</AssemblyVersion>
- </AssemblyInfo>
- <ReturnValue>
- <ReturnType>System.String</ReturnType>
- </ReturnValue>
- <Docs>
- <summary>The string "WinRT", representing the Windows Runtime platform.</summary>
- <remarks>To be added.</remarks>
- </Docs>
- </Member>
</Members>
</Type>