From 2d3478a3f2deb0e30a90667ff8a71eae7285c002 Mon Sep 17 00:00:00 2001 From: SungHyun Min Date: Mon, 24 Jul 2017 16:05:34 +0900 Subject: Add DefaultRenderer TASK=TCAPI-2601 - To prevent throwing exception when the renderer does not exist. e.g. using customized view that is inherited View without implementing Renderer. - To run ControlGallery app(Xamarin.Forms project) which uses View directly. Change-Id: I8244f24e2dec7cf6e54cddd0fb191a37c34c7936 --- Xamarin.Forms.Platform.Tizen/Platform.cs | 11 +++-------- .../Renderers/DefaultRenderer.cs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 Xamarin.Forms.Platform.Tizen/Renderers/DefaultRenderer.cs (limited to 'Xamarin.Forms.Platform.Tizen') diff --git a/Xamarin.Forms.Platform.Tizen/Platform.cs b/Xamarin.Forms.Platform.Tizen/Platform.cs index c48a66e8..5b0fd349 100644 --- a/Xamarin.Forms.Platform.Tizen/Platform.cs +++ b/Xamarin.Forms.Platform.Tizen/Platform.cs @@ -128,7 +128,7 @@ namespace Xamarin.Forms.Platform.Tizen // Make naviitem transparent if Forms.Context.MainWindow is transparent. // Make sure that this is only for _navModel._naviTree. (not for _navModel._modalStack) // In addtion, the style of naviItem is only decided before the naviItem pushed into Naviframe. (not on-demand). - if(Forms.Context.MainWindow.Alpha) + if (Forms.Context.MainWindow.Alpha) { naviItem.Style = "default/transparent"; } @@ -172,12 +172,7 @@ namespace Xamarin.Forms.Platform.Tizen static IVisualElementRenderer AttachRenderer(VisualElement view) { - IVisualElementRenderer visualElementRenderer = Registrar.Registered.GetHandler(view.GetType()); - - if (null == visualElementRenderer) - { - throw new ArgumentException(String.Format("{0} doesn't have assigned renderer!", view.GetType())); - } + IVisualElementRenderer visualElementRenderer = Registrar.Registered.GetHandler(view.GetType()) ?? new DefaultRenderer(); visualElementRenderer.SetElement(view); @@ -344,4 +339,4 @@ namespace Xamarin.Forms.Platform.Tizen tcs?.SetResult(true); } } -} +} \ No newline at end of file diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/DefaultRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/DefaultRenderer.cs new file mode 100644 index 00000000..ab009ffb --- /dev/null +++ b/Xamarin.Forms.Platform.Tizen/Renderers/DefaultRenderer.cs @@ -0,0 +1,18 @@ +using ElmSharp; +using ELayout = ElmSharp.Layout; + +namespace Xamarin.Forms.Platform.Tizen +{ + public sealed class DefaultRenderer : VisualElementRenderer + { + protected override void OnElementChanged(ElementChangedEventArgs e) + { + if (NativeView == null) + { + var control = new ELayout(Forms.Context.MainWindow); + SetNativeControl(control); + } + base.OnElementChanged(e); + } + } +} \ No newline at end of file -- cgit v1.2.3