【问题标题】:xamarin PCL forms shared custom controlsxamarin PCL 表单共享自定义控件
【发布时间】:2016-04-22 08:18:29
【问题描述】:

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

例如:thisthis xamarin 指南和 xamarin 博客上的帖子。

有没有办法在PCL共享项目中只实现一次,到处使用?

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

谢谢大家,欢迎回复

【问题讨论】:

  • 不,不可能。每个平台的 UI 制作和呈现方式都不同,尽管非常相似。
  • 哦,好的:(那将是一个很棒的功能。如果您回复我可以关闭问题。谢谢!
  • 有可能是我误会了你,我宁愿不把它作为答案发布,否则可能会有人来告诉你,等等;)

标签: c# xamarin xamarin.forms custom-renderer


【解决方案1】:

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

【讨论】:

  • 对不起,App3 是什么意思?你的项目名称是?如果我有包含自定义渲染的子文件夹,如何定义 clr-namespaces?谢谢
  • App3 是项目名称。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2020-05-29
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2019-06-16
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多