从 Xamarin 表单元素共享代码访问自定义渲染器实例

Posted

技术标签:

【中文标题】从 Xamarin 表单元素共享代码访问自定义渲染器实例【英文标题】:Accessing a Custom Renderer Instance from Xamarin Forms Element Shared Code 【发布时间】:2015-10-24 03:59:05 【问题描述】:

我正在创建一个在每个平台上使用custom renderer 的组件。我们就称它为 SpecialButton 元素。 BindableProperty 适用于值,但我还希望允许用户从共享代码调用渲染器上的操作(从表单控制代码调用渲染器上的方法)。我将 DependencyService 视为一种可能的解决方案,但我认为这不会起作用,因为多个按钮可能出现在同一页面上,因此我需要创建并链接到我的 Xamarin Forms 元素的特定渲染器实例。

那么,我的 Xamarin Forms 控件元素是否有一种优雅的方式 访问由表单实例化的自定义渲染器 框架?

我曾考虑过在控件上公开一个属性,并让渲染器在其构造函数中将自己设置为该属性,但这感觉很麻烦,并且也将它公开给了我不想做的控件用户。

【问题讨论】:

【参考方案1】:

我想我找到了解决方案。我没有意识到MessagingCenter 有一个可以用来指定元素属性的源参数。

MessagingCenter.Subscribe(this, "DoOperation", myButton => DoOperation(), Element);

【讨论】:

以上是关于从 Xamarin 表单元素共享代码访问自定义渲染器实例的主要内容,如果未能解决你的问题,请参考以下文章

UWP xamarin 中的自定义渲染器

Xamarin Forms 渲染器未响应事件更改

来自 xaml 的自定义渲染器的 Xamarin 访问属性

xamarin.forms 从自定义渲染器访问 viewmodel 属性

Xamarin表单 - 如何使用标题生成iOS ListView本机分组样式?

xamarin 表单地图上的自定义引脚