diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2017-04-25 20:06:29 +0200 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2017-04-25 11:06:29 -0700 |
commit | 9b49e3f1c1f82a05bb1f282cd5b251228a357ae7 (patch) | |
tree | 3e343815cb2fa4dd0f53b3bd39948c004bf9797c | |
parent | 8e567b9ad1669265d994c84acd5c49d43829a3da (diff) | |
download | xamarin-forms-9b49e3f1c1f82a05bb1f282cd5b251228a357ae7.tar.gz xamarin-forms-9b49e3f1c1f82a05bb1f282cd5b251228a357ae7.tar.bz2 xamarin-forms-9b49e3f1c1f82a05bb1f282cd5b251228a357ae7.zip |
[Xaml] OnPlatform.Default value (#873)
* [Xaml] OnPlatform.Default value
* docs
-rw-r--r-- | Xamarin.Forms.Core/OnPlatform.cs | 14 | ||||
-rw-r--r-- | Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs | 8 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml | 16 |
4 files changed, 38 insertions, 2 deletions
diff --git a/Xamarin.Forms.Core/OnPlatform.cs b/Xamarin.Forms.Core/OnPlatform.cs index 68621134..c179dc57 100644 --- a/Xamarin.Forms.Core/OnPlatform.cs +++ b/Xamarin.Forms.Core/OnPlatform.cs @@ -43,9 +43,21 @@ namespace Xamarin.Forms } } + bool hasDefault; + T @default; + public T Default { + get { return @default; } + set { + hasDefault = true; + @default = value; + } + } + public IList<On> Platforms { get; private set; } +#pragma warning disable RECS0108 // Warns about static fields in generic types static readonly IValueConverterProvider s_valueConverter = DependencyService.Get<IValueConverterProvider>(); +#pragma warning restore RECS0108 // Warns about static fields in generic types public static implicit operator T(OnPlatform<T> onPlatform) { @@ -60,7 +72,7 @@ namespace Xamarin.Forms } if (!onPlatform.useLegacyFallback) - return default(T); + return onPlatform.hasDefault ? onPlatform.@default : default(T); //legacy fallback #pragma warning disable 0618, 0612 diff --git a/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml b/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml index de9a1e67..5c3cd3d9 100644 --- a/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml +++ b/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml @@ -37,7 +37,7 @@ </OnPlatform> </Label.Text> <Label.HeightRequest> - <OnPlatform x:TypeArguments="x:Double"> + <OnPlatform x:TypeArguments="x:Double" Default="63"> <On Platform="iOS">21</On> <On Platform="Android, FooBar">42</On> </OnPlatform> diff --git a/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs b/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs index edfb695f..23ebe923 100644 --- a/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs +++ b/Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs @@ -121,7 +121,15 @@ namespace Xamarin.Forms.Xaml.UnitTests ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = "FooBar"; layout = new OnPlatform(useCompiledXaml); Assert.AreEqual(42, layout.label0.HeightRequest); + } + [TestCase(false)] + [TestCase(true)] + public void OnPlatformDefault(bool useCompiledXaml) + { + ((MockPlatformServices)Device.PlatformServices).RuntimePlatform = "\ud83d\ude80"; + var layout = new OnPlatform(useCompiledXaml); + Assert.AreEqual(63, layout.label0.HeightRequest); } } } diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml index e703a917..4addd775 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml @@ -75,6 +75,22 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Default"> + <MemberSignature Language="C#" Value="public T Default { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance !T Default" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>T</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="iOS"> <MemberSignature Language="C#" Value="public T iOS { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance !T iOS" /> |