C# xamarin PCL表单共享自定义控件

C# xamarin PCL表单共享自定义控件,c#,xamarin,xamarin.forms,custom-renderer,C#,Xamarin,Xamarin.forms,Custom Renderer,我读了很多关于控件自定义的帖子。我的问题很简单:每一篇教程文章都谈到在PCL共享项目中创建自定义渲染器,并在每个平台上使用特定的渲染器实现它 示例:或xamarin指南和xamarin博客上的帖子 有没有办法在PCL共享项目中只实现一次并在任何地方使用它 我的目标是创建一个可能是全新的自定义控件,例如包含一些矩形和一些标签的控件。或者任何你能想象到的。我唯一无法实现的功能是仅在共享项目中实现 谢谢大家,欢迎回复。定制渲染器是特定于平台的。它们的目的是将Xamarin.Forms元素转换为本机控件

我读了很多关于
控件自定义的帖子。我的问题很简单:每一篇教程文章都谈到在PCL共享项目中创建自定义渲染器,并在每个平台上使用特定的渲染器实现它

示例:或xamarin指南和xamarin博客上的帖子

有没有办法在PCL共享项目中只实现一次并在任何地方使用它

我的目标是创建一个可能是全新的自定义控件,例如包含一些矩形和一些标签的控件。或者任何你能想象到的。我唯一无法实现的功能是仅在共享项目中实现


谢谢大家,欢迎回复。

定制渲染器是特定于平台的。它们的目的是将Xamarin.Forms元素转换为本机控件

您的用例听起来像一个复合控件。您可以做的是使用所有可用的控件将其包装到可重用组件中

MyControl.xaml

<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App3.MyControl">
    <Label Text="Hello World" VerticalOptions="Center" HorizontalOptions="Center" />
    <BoxView BackgroundColor="Fuchsia"></BoxView>
    <!-- add whatever you want -->
</StackLayout>
Page1.xaml

<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App3.MyControl">
    <Label Text="Hello World" VerticalOptions="Center" HorizontalOptions="Center" />
    <BoxView BackgroundColor="Fuchsia"></BoxView>
    <!-- add whatever you want -->
</StackLayout>
你可以在你的页面中使用它

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App3;assembly=App3"
             x:Class="App3.Page1">
    <local:MyControl></local:MyControl>
</ContentPage>

您需要为不同的平台定制渲染器,以便访问平台提供的本机小部件


但是,如果您希望自己绘制所有自定义控件,则可以使用跨平台绘图库来实现该结果。有关更多详细信息,请参阅此博文:

不,不可能。每个平台在UI的制作和呈现方式上都有所不同,尽管非常相似。哦,好的:(这将是一个很好的功能。如果你回答,我可以结束这个问题。谢谢!有可能我误解了你,我不想将其作为答案发布,有人可能会告诉你,等等;)对不起,你指的是什么?你的项目名称是什么?如果我的子文件夹中有自定义呈现,如何定义clr名称空间?感谢3是项目名称。