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

时间:2015-08-01 16:20:36

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

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

  

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

我曾考虑过在控件上公开一个属性,并让渲染器在构造函数中将自己设置为属性,但这会让人觉得hacky并且还将它暴露给我不想做的控件的用户。

1 个答案:

答案 0 :(得分:0)

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

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