创建 Xamarin.Forms 可视呈现器

您所在的位置:网站首页 xamarin可视化开发 创建 Xamarin.Forms 可视呈现器

创建 Xamarin.Forms 可视呈现器

2023-07-20 18:56| 来源: 网络整理| 查看: 265

创建 Xamarin.Forms 可视呈现器 项目 07/13/2023

下载示例

Xamarin.Forms Visual 允许创建呈现器并选择性地应用于 VisualElement 对象,而无需子类 Xamarin.Forms 视图。 指定类型的呈现器(作为其 ExportRendererAttribute的一IVisual部分)将用于在视图中呈现选择的呈现器,而不是默认呈现器。 在呈现器选择时, Visual 将检查视图的属性并将其包含在呈现器选择过程中。

重要

目前,呈现 Visual 视图后无法更改属性,但将来的版本中会更改该属性。

创建和使用 Xamarin.Forms 可视呈现器的过程是:

为所需视图创建平台呈现器。 有关详细信息,请参阅 创建呈现器。 创建派生自 IVisual的类型。 有关详细信息,请参阅 创建 IVisual 类型。 将 IVisual 类型注册为修饰呈现器的 的 ExportRendererAttribute 一部分。 有关详细信息,请参阅 注册 IVisual 类型。 通过将视图IVisual上的 属性设置为Visual名称来使用可视呈现器。 有关详细信息,请参阅 使用可视呈现器。 [可选]注册类型的名称 IVisual 。 有关详细信息,请参阅 为 IVisual 类型注册名称。 创建平台呈现器

有关创建呈现器类的信息,请参阅 自定义呈现器。 但请注意 Xamarin.Forms ,视觉对象呈现器无需对视图进行子类化即可应用于视图。

此处概述的呈现器类实现一个使用阴影显示其文本的自定义 Button 。

iOS

下面的代码示例演示适用于 iOS 的按钮呈现器:

public class CustomButtonRenderer : ButtonRenderer { protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null) { // Cleanup } if (e.NewElement != null) { Control.TitleShadowOffset = new CoreGraphics.CGSize(1, 1); Control.SetTitleShadowColor(Color.Black.ToUIColor(), UIKit.UIControlState.Normal); } } } Android

以下代码示例演示适用于 Android 的按钮呈现器:

public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer { public CustomButtonRenderer(Context context) : base(context) { } protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null) { // Cleanup } if (e.NewElement != null) { Control.SetShadowLayer(5, 3, 3, Color.Black.ToAndroid()); } } } 创建 IVisual 类型

在跨平台库中,创建派生自 IVisual的类型:

public class CustomVisual : IVisual { }

CustomVisual然后,可以针对呈现器类注册类型,从而Button允许对象选择使用呈现器。

注册 IVisual 类型

在平台项目中,在程序集级别添加 ExportRendererAttribute :

[assembly: ExportRenderer(typeof(Xamarin.Forms.Button), typeof(CustomButtonRenderer), new[] { typeof(CustomVisual) })] namespace VisualDemos.iOS { public class CustomButtonRenderer : ButtonRenderer { protected override void OnElementChanged(ElementChangedEventArgs e) { // ... } } }

在此 iOS 平台项目的示例中, ExportRendererAttribute 指定 CustomButtonRenderer 类将用于呈现使用 Button 对象,类型 IVisual 注册为第三个参数。 指定类型的呈现器(作为其 ExportRendererAttribute的一IVisual部分)将用于在视图中呈现选择的呈现器,而不是默认呈现器。

使用可视呈现器

对象 Button 可以通过将其 Visual 属性设置为 Custom来选择使用呈现器类:

注意

在 XAML 中,类型转换器无需在属性值中包含 Visual “Visual”后缀。 但是,也可以指定完整类型名称。

等效 C# 代码如下:

Button button = new Button { Text = "CUSTOM BUTTON", ... }; button.Visual = new CustomVisual();

在呈现器选择时, Visual 的 Button 属性将被检查并包含在呈现器选择过程中。 如果未找到呈现器, Xamarin.Forms 将使用默认呈现器。

以下屏幕截图显示了呈现 Button的 ,它显示带有阴影的文本:

屏幕截图

注册 IVisual 类型的名称

VisualAttribute可用于选择性地为IVisual类型注册不同的名称。 此方法可用于解决不同视觉对象库之间的命名冲突,或者你只想使用不同于其类型名称的名称来引用视觉对象时。

VisualAttribute应在跨平台库或平台项目中的程序集级别定义 :

[assembly: Visual("MyVisual", typeof(CustomVisual))]

IVisual然后,可以通过其注册名称来使用类型:

注意

通过注册名称使用视觉对象时,必须包含任何“Visual”后缀。

相关链接 材料视觉对象 (示例) Xamarin.Forms 材料视觉对象 自定义呈现器


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3