1

我读了很多关于controls customizations. 我的问题很简单:每个教程帖子都讨论了在您的 PCL 共享项目中创建自定义渲染器,并在每个平台上使用特定的渲染器实现它。

示例:帖子在 xamarin 指南和 xamarin 博客上。

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

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

谢谢大家,任何回复将不胜感激

4

2 回答 2

2

自定义渲染器是特定于平台的。它们的目的是将 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>

MyControl.xaml.cs

public partial class MyControl : StackLayout
{
    public MyControl()
    {
        InitializeComponent();
    }
}

Page1.xaml

比你可以在你的页面中使用它。

<?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>
于 2016-04-22T08:53:31.573 回答
1

您需要针对不同平台的自定义渲染器,以便您可以访问平台提供的本机小部件。

但是,如果您想自己绘制所有自定义控件,您可以使用skiasharp跨平台绘图库来实现结果。有关更多详细信息,请参阅此博客文章:使用 SkiaSharp 的跨平台 2D 图形

于 2016-04-22T08:58:40.950 回答