从 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 表单元素共享代码访问自定义渲染器实例的主要内容,如果未能解决你的问题,请参考以下文章
xamarin.forms 从自定义渲染器访问 viewmodel 属性