Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 91519

Create Native view WinRT from Xamarin Forms ContentView.

$
0
0

Hello sorry for my English.
I can make a render for xamarin view to native control Android and found very good.
Ex:
var r = Platform.GetRenderer(contenido);
if (r == null)
{
r = Platform.CreateRenderer(contenido);
Helper.AppDroidHelper.SetPlatform(contenido);
}

        var s = contenido.Measure(Forms.Context.Resources.DisplayMetrics.WidthPixels / Forms.Context.Resources.DisplayMetrics.Density, Forms.Context.Resources.DisplayMetrics.HeightPixels / Forms.Context.Resources.DisplayMetrics.Density);
        contenido.Layout(new Rectangle() { Width = s.Request.Width, Height = s.Request.Height });

        var width = (int)(s.Request.Width * Forms.Context.Resources.DisplayMetrics.Density);
        var height = (int)(s.Request.Height * Forms.Context.Resources.DisplayMetrics.Density);

        r.ViewGroup.LayoutParameters = new ViewGroup.LayoutParams(width, height);

        this.layout = new LinearLayout(Forms.Context) { LayoutParameters = new ViewGroup.LayoutParams(width, height) };
        this.layout.SetBackgroundColor(Android.Graphics.Color.Transparent);
        this.layout.AddView(r.ViewGroup);
        this.RequestWindowFeature((int)WindowFeatures.NoTitle);
        this.SetContentView(this.layout);

But in Windows Phone i cant't make work.
ContentDialog dialog = new ContentDialog();
dialog.content = viewXamarinForms.GetOrCreateRenderer().ContainerElement;

The render is create ok, but doesn't show any native control in the screen because the native controls doesn't have size.
I try calling Mesaure() and Layout() like in Android, but the view don't set Height and Width and when call the render doesn't show the native view.
Full class WinPhone proyect:
public class DialogWP: ContentDialog
{
public DialogWP(View xamarinFormsView view) : base()
{
var rec = view.Measure(Window.Current.Bounds.Width, Window.Current.Bounds.Height);
view.Layout(new Rectangle(0, 0, rec.Request.Width, Height = rec.Request.Height));
var r = view.GetOrCreateRenderer();
this.Content = r;
}

    public async void Show()
    {
        await this.ShowAsync();
    }

}

Tnks


Viewing all articles
Browse latest Browse all 91519

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>