summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2017-04-25 20:06:29 +0200
committerJason Smith <jason.smith@xamarin.com>2017-04-25 11:06:29 -0700
commit9b49e3f1c1f82a05bb1f282cd5b251228a357ae7 (patch)
tree3e343815cb2fa4dd0f53b3bd39948c004bf9797c
parent8e567b9ad1669265d994c84acd5c49d43829a3da (diff)
downloadxamarin-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.cs14
-rw-r--r--Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml2
-rw-r--r--Xamarin.Forms.Xaml.UnitTests/OnPlatform.xaml.cs8
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/OnPlatform`1.xml16
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" />