Xamarin.forms 在Xamarin表单PCL中创建控件的正确方法是什么?

Xamarin.forms 在Xamarin表单PCL中创建控件的正确方法是什么?,xamarin.forms,Xamarin.forms,在Xamarin表单PCL中创建控件的正确方法是什么 在我的类库中,我有一个“control”类,它不是从任何视图派生的,只是一个带有一些标签、滚动视图、逻辑等的布局。 我在几个地方的同一个PLC的页面中使用它 我的问题是-包装这个“控件”并在PLC页面中使用它的正确方法是什么? 我最终让这个控件类公开它的根布局,在这里我添加了所有的子元素,然后将这个布局添加到页面布局的子元素中。这使得这个类成为页面UI部分的某种生成器 看起来,使用“视图”作为基类需要向Android和iOS项目添加自定义渲染

在Xamarin表单PCL中创建控件的正确方法是什么

在我的类库中,我有一个“control”类,它不是从任何视图派生的,只是一个带有一些标签、滚动视图、逻辑等的布局。 我在几个地方的同一个PLC的页面中使用它

我的问题是-包装这个“控件”并在PLC页面中使用它的正确方法是什么? 我最终让这个控件类公开它的根布局,在这里我添加了所有的子元素,然后将这个布局添加到页面布局的子元素中。这使得这个类成为页面UI部分的某种生成器

看起来,使用“视图”作为基类需要向Android和iOS项目添加自定义渲染器 我不需要这样做——我的所有UI功能都适合PCL,不需要任何定制工作

我有一种感觉,我做得不对


如果您不想使用
视图
作为基类,那么您将非常感谢提供有关如何正确执行此操作的建议和/或链接到文档。

在我看来,您实际上是在伤害自己。我通常使用
ContentView
作为基类来创建我自己的控件,它不需要自定义渲染器就可以很好地工作,因为ContentView在iOS和Android中已经有了自己的渲染器。像这样的东西应该能奏效

public class MyContentView : ContentView
{
    private Layout createLayout();

    public MyContentView()
    {
        Content = createLayout();
    }
}

为什么需要自定义渲染器?为什么不能使用
ContentView
作为基类,并将
ContentView.Content
设置为主布局?这就是重点,我不需要自定义渲染器。我只是想在PCL中组织代码,这样我就可以这样做:。。。添加(新的myControl_inPCL());而不是:var mycontrol=new mycontrol_inPCL()。。。添加(mycontrol.layout);啊,我明白了!给我一些。事实上,ContentView是我所需要的。谢谢