gpt4 book ai didi

c# - Xamarin.Forms 自定义控件库

转载 作者:行者123 更新时间:2023-11-29 02:22:42 26 4
gpt4 key购买 nike

如何使用自定义控件和平台指定的代码创建基于 Xamrin.Forms 的自定义控件库?我需要使模块架构能够添加一些具有平台指定代码的模块。

最佳答案

Xamarin.Forms 框架中已包含您描述的所有内容。具体来说,支持使用特定于平台的呈现器的 UI 控件和使用 DependencyService 的非 ui 代码。在这两种情况下,您都在引用 Xamarin.Forms 并面向 Android/iOS/Windows Phone 平台的通用库中定义通用数据结构、接口(interface)和 View 子类,并在专门针对各种平台的程序集中提供特定于平台的代码。

对于 UI 控件,您可以创建特定于平台的呈现器(也称为“自定义呈现器”)并使用 ExportRenderer 属性将它们注册到 Xamarin Forms 运行时。实际上,这应该工作的方式是来自“API 程序集”的控件(从这里开始,我将使用 Jason Smith 对其使用的术语:“模型”)用于捕获任何配置或数据绑定(bind),然后自定义渲染器使用模型中包含的数据来确定 native 控件的外观/行为方式。请务必注意,此处实际上有两个实例:模型实例,即 Xamarin Forms View 用作 API 图面以控制实际控件行为的实例,以及渲染器实例,即实际绘制 UI 的实例。如果有任何数据绑定(bind),您将希望渲染器监视模型的可绑定(bind)属性的更改,以便 UI 可以反射(reflect)模型的状态。此主题在 Xamarin's docs for Custom Renderers 中有更详细的描述。 .

对于非 UI 代码(“ headless ”功能,例如地理定位、传感器等),您可以使用 DependencyService。与 UI 控件类似,您定义存在于“API 程序集”中的抽象 API(表示为接口(interface))以提供独立于平台的方式来访问功能,并为使用 DependencyService 注册的每个受支持平台提供实现属性。实际上,您可以将 DependencyService 视为使用该属性自动填充的依赖注入(inject)容器。同样,这个主题在 Xamarin docs for the DependencyService 中完全涵盖。 .

关于c# - Xamarin.Forms 自定义控件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com