如何从Xamarin Forms视图创建本地UWP视图?

7
我正在尝试从Xamarin Forms视图创建一个本地的UWP视图。根据此处的示例,我已经成功地在Android和IOS上实现了它。
更准确地说,在IOS上的转换如下:
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;
}

然而,我需要一种类似的方法来处理UWP。

任何帮助将不胜感激!


我回答了一个类似的问题,但是关于Android,请检查是否有帮助:https://dev59.com/t5fga4cB1Zd3GeqPDvcD#37788847 - jzeferino
请点击此链接 https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/renderers/。 - Akash Amin
我需要更接近Android或IOS解决方案的东西。我已经用IOS示例更新了我的问题描述。 - Mirel Vlad
2个回答

4

好的,我已经通过编写以下代码来解决uwp相关问题:

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

     view.Layout(size);

     return renderer.ContainerElement;
}

1

这是一个旧问题,但我想为最新的Xamarin版本添加答案。在4.7版本中我遇到了同样的问题,在研究Xamarin源代码后,我发现有一个名为ViewToRendererConverter的扩展转换器方法可以像下面这样使用。它处理所有子元件的渲染和大小。

   var viewToRendererConverter = new ViewToRendererConverter();
    var frameworkElement = viewToRendererConverter.Convert(view, null, null, null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接