【问题标题】:xamarin form: Custom Renderer not get executed if Custom control in Shared libraryxamarin 表单:如果共享库中的自定义控件不会执行自定义渲染器
【发布时间】:2017-01-15 05:29:56
【问题描述】:

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

库项目包含:共享库项目、android、iOS类似于应用的主项目。

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

在共享库内的库项目中,我有一个扩展 StackLayout 的自定义控件,并且特定于平台的 Renderer 将扩展自定义控件。

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

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

【问题讨论】:

    标签: android events xamarin platform custom-view


    【解决方案1】:

    除非你使用预处理器指令,否则你不能在共享代码中编写自定义渲染器

    #if __IOS__
        //your ios specific code
    #endif
    #if __ANDROID__
        //your android specific code   
    #endif
    

    也许你扩展了错误的类,如果你发布你的代码,我们可以提供更好的帮助;例如我写了一个代码来像这样改变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 方法。希望对你有所帮助。

    【讨论】:

    • 你是对的...我把它变成了 PCL 项目,现在很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多