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

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

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

So, is there an elegant way for my Xamarin Forms control element to get access to the custom renderer that was instantiated by the Forms framework?

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

最佳答案

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

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

关于c# - 从 Xamarin Forms 元素共享代码访问自定义渲染器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763674/

相关文章:

c# - Omu.ValueInjecter 在允许设置发生之前检查属性

android - 捕获android中的所有异常(xamarin)

c# - 支持基本类型和可空类型的两种方式可绑定(bind)条目

asp.net - 对于那些想要将一切都变成 .NET 控件的人,您会说什么?

c# - 有效地检查角色声明

c# - 找不到方法 : 'Boolean Microsoft. IdentityModel.Tokens.TokenUtilities.IsRecoverableConfiguration

c# - AsNoTracking 上下文属性、查询或 ChangeTracker?

ios - IOS : Remove space between SearchBar and NavigationBar 上的 Xamarin.Forms

c# - 用户控件或面板的自定义边框宽度和边框颜色

wpf - 对 DevExpress WPF 控件的指控是否有效?什么是好的替代供应商?