【问题标题】:How can I create a Custom Renderer for a ContentView in Xamarin.Forms MacOS?如何在 Xamarin.Forms MacOS 中为 ContentView 创建自定义渲染器?
【发布时间】:2020-05-07 15:13:01
【问题描述】:

我们使用Xamarin.FormsMacOS,并有一个自定义视图MyCustomView : Xamarin.Forms.ContentView,我正在尝试为我们的视图创建一个自定义视图渲染器,但它会干扰渲染视图。

有人知道如何在我的平台项目中创建视图渲染器吗?

这是我到目前为止尝试过的代码,正在寻找类似的地方:

[assembly: Xamarin.Forms.ExportRenderer(typeof(MyCustomView), typeof(MyCustomViewRenderer))]
namespace Mac.Renderers
{
    public class MyCustomViewRenderer : ViewRenderer<Xamarin.Forms.ContentView, AppKit.NSView>
    {
        public MyCustomViewRenderer()
        {
           // My implementation
        }
    }
}

实现留空时的事件,有这个自定义渲染器会影响 ContentView 的显示,所以我认为这段代码一定不对 - 有没有办法做到这一点?

【问题讨论】:

  • “正在影响 ContentView 的显示,所以我认为这段代码一定不对”是什么意思?它以何种方式受到影响?

标签: xamarin xamarin.forms xamarin.mac


【解决方案1】:

您可以通过将类更改为从 VisualElementRenderer&lt;T&gt; 继承来解决您的问题。

[assembly: Xamarin.Forms.ExportRenderer(typeof(MyCustomView), typeof(MyCustomViewRenderer))]
namespace Mac.Renderers
{
    public class MyCustomViewRenderer : VisualElementRenderer<ContentView>
    {
        public MyCustomViewRenderer()
        {
           // My implementation
        }
    }
}

Page有一个默认的Renderer“PageRenderer”,不明白为什么ContentView没有。如果有 ContentViewRenderer 就好了。

希望这会有所帮助。-

【讨论】:

  • 非常感谢,这非常有效。我们遇到的问题是使用其他自定义渲染器时没有正确渲染边框。我们嵌套了一些视图,所以我无法确定问题的确切来源,只是删除旧的ExportRenderer 修复了它。 VisualElementRenderer 在这里工作得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 2017-01-07
相关资源
最近更新 更多