NControl 绘制方法未触发

NControl draw method not firing

我最近发现了可以与 Xamarin.Forms 一起使用的 NGraphics 和 NControl 库,到目前为止它看起来很棒。

我遇到的问题是永远不会调用 draw 方法,而且我不太确定哪里出错了。我的代码在下面(我去掉了所有不必要的部分),非常感谢任何帮助!

public class CustomGrid : NControlView
    {
        public CustomGrid ()
        {
            base.Invalidate (); //Invalidating the control doesn't redraw the control
            Content = new Label {BackgroundColor = Xamarin.Forms.Color.Transparent};
            BackgroundColor = Xamarin.Forms.Color.Blue;
        }


        public override void Draw (NGraphics.ICanvas canvas, NGraphics.Rect rect)
        {
            base.Draw(canvas, rect);
            //foreach column draw the grid line on the right
            foreach (CustomColumn c in ColumnCollection) 
            {
                canvas.DrawLine (c.CoOrds.startX,c.CoOrds.startY, c.CoOrds.EndX, c.CoOrds.EndY,Colors.White);
            }

            //for each row draw the bottom grid line
            foreach (CustomRow r in RowCollection) 
            {
                canvas.DrawLine (r.CoOrds.startX,r.CoOrds.startY, r.CoOrds.EndX, r.CoOrds.EndY,Colors.White);
            }
        }

        public List<CustomColumn> ColumnCollection { get; set; }
        public List<CustomRow> RowCollection { get; set; }


    }

为了确保我没有发疯,我复制并粘贴了在 NControl GitHub Repo 上找到的示例,但这似乎也不起作用。

提前致谢!

  1. 确保在 Forms.Init()
  2. 之后调用 NControlViewRenderer.Init()
  3. public override void Draw(NGraphics.ICanvas canvas, NGraphics.Rect rect)中你不一定需要调用base.Draw()
  4. 尝试调用 CustomGrid.Invalidate(),这应该会强制重绘
  5. 确保您的控件确实在屏幕上,在视口内并且大小大于 0,0,您可以给它一个粉红色的背景,看看它是否显示在任何地方...
  6. 为什么你说 到目前为止看起来很棒。 显然不是?比如说,哪一部分真正起作用了?
  7. 在子类的构造函数中设置一个断点,看看它是否真的被实例化了...

这些有帮助吗?