7

I am trying to create a native UWP view from a Xamarin Forms view. Following the example from here, I managed to do it for Android and IOS.

More precisely, on IOS the conversion looks like this:

public static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
{
    var renderer = RendererFactory.GetRenderer (view); 
    renderer.NativeView.Frame = size; 
    renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
    renderer.NativeView.ContentMode = UIViewContentMode.ScaleToFill; 
    renderer.Element.Layout (size.ToRectangle()); 
    var nativeView = renderer.NativeView; 
    nativeView.SetNeedsLayout ();

    return nativeView;
}

However, I need a similar approach for UWP.

Any help would be appreciated!

Mirel Vlad
  • 2,032
  • 3
  • 27
  • 35
  • I answered a similar question but on android, check if helps: http://stackoverflow.com/questions/37788731/xamarin-forms-how-i-could-using-android-widget-autocompletetextview-on-xamarin-f/37788847#37788847 – jzeferino Jun 13 '16 at 12:27
  • Follow this link https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/renderers/ – Akash Amin Jun 13 '16 at 12:41
  • I need something closer to the android or IOS solution. I have updated my problem description with the IOS example. – Mirel Vlad Jun 13 '16 at 12:54

2 Answers2

4

Ok, I've solved this by writing the following code for uwp:

internal static FrameworkElement ConvertFormsToNative(View view, Rectangle size)
{
     var renderer = Platform.CreateRenderer(view);           

     view.Layout(size);

     return renderer.ContainerElement;
}
Mirel Vlad
  • 2,032
  • 3
  • 27
  • 35
1

Old question but i would like to add an answer for the latest Xamarin version. I had same problem in 4.7 version and after digging into the Xamarin's source code, i found out that there is an extension converter method called ViewToRendererConverter can be utilized like below. It handles all childrens rendering and their sizes.

   var viewToRendererConverter = new ViewToRendererConverter();
    var frameworkElement = viewToRendererConverter.Convert(view, null, null, null);
Emil
  • 6,411
  • 7
  • 62
  • 112