4

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

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

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

4

1 回答 1

0

我想我想出了一个解决办法。我没有意识到MessagingCenter有一个可用于指定元素属性的源参数。

MessagingCenter.Subscribe(this, "DoOperation", myButton => DoOperation(), Element);
于 2015-08-01T16:31:10.957 回答