xamarin 表单:如果共享库中的自定义控件,则不会执行自定义渲染器

xamarin form: Custom Renderer not get executed if Custom control in Shared library

我在一个解决方案中有两个项目:一个是库项目,另一个是应用程序的主项目。

库项目包含:共享库项目,android,和 iOS 类似于应用程序的主项目。

库项目将包含我可以重用的所有公共代码。

在共享库内的库项目中,我有一个扩展 StackLayout 的自定义控件,特定平台将有扩展自定义控件的渲染器。

如果我将所有代码放到应用程序的主项目中,渲染器确实会调用并能够执行我为控件编写的触摸事件。另一方面,如果将代码移至库项目,则控件不再具有触摸事件,因为 android 部分中编写的渲染器未被调用。

有谁知道如何调用渲染器?

你不能在共享代码中编写自定义渲染器,除非你使用像

这样的预处理器指令
#if __IOS__
    //your ios specific code
#endif
#if __ANDROID__
    //your android specific code   
#endif

也许您扩展错误 class,如果您 post 您的代码我们可以提供更好的帮助;例如,我写了一个代码来改变 android 上的导航栏背景,就像这样

public class CustomNavigationRenderer : NavigationRenderer
{
    protected override void OnLayout(bool changed, int l, int t, int r, int b)
    {
        base.OnLayout(changed, l, t, r, b);
        //my own code

我必须扩展 Xamarin.Forms.Platform.Android.NavigationRenderer 并覆盖 OnLayout 方法。希望对你有帮助。