xamarin表单:如果共享库中的自定义控件

时间:2017-01-15 05:29:56

标签: android events xamarin platform custom-view

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

除非使用

之类的预处理程序指令,否则无法在共享代码中编写自定义渲染器
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

也许你正在扩展错误的课程,如果你发布你的代码我们可以帮助更好;例如,我写了一个代码来改变Android上的导航栏背景,如此

resolve

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