如何创建多个相同类型的自定义渲染器?

How to create multiple custom renderer with same type?

我想创建一个 ContentPage 类型的页面渲染。我在 android 中创建了它并且它正在工作,但在 IOS 中有相同类型(ContentPage)的自定义页面渲染器。它可以删除,因为它来自 nuget 包并在不同的上下文中工作。

这是我的代码

[assembly: ExportRenderer(typeof(ContentPage), typeof(CustomPageRenderer))]
namespace AlwinInvoiceGenerator.IOS
{
   using CoreGraphics;
   using UIKit;
   using Xamarin.Forms;
   using Xamarin.Forms.Platform.iOS;

public class CustomPageRenderer : PageRenderer
{
    public override void ViewWillAppear(bool animated)
    {
        base.ViewWillAppear(animated);
        if (Element == null || !(Element is ContentPage basePage) || basePage.BindingContext == null ||
            !(basePage.BindingContext is BaseViewModel baseViewModel))
        {
            return;
        }

        SetCustomBackButton(baseViewModel);
    }

    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    {
        base.OnElementChanged(e);
        OverrideUserInterfaceStyle = UIUserInterfaceStyle.Light;
    }

    private void SetCustomBackButton(BaseViewModel baseViewModel)
    {
        var fakeButton = new UIButton {Frame = new CGRect(0, 0, 50, 40), BackgroundColor = UIColor.Clear};
        fakeButton.TouchDown += (sender, e) =>
        {
            baseViewModel.OnBackButtonClicked();
        };

        NavigationController?.NavigationBar.AddSubview(fakeButton);
    }
}

好像没有注册,所以没有打电话。 我有另一个页面渲染器在 assembly

中注册
[assembly: ExportRenderer(typeof(ContentPage), typeof(IOSToolbarExtensions.iOS.Renderers.IOSToolbarExtensionsContentPageRenderer), Priority = short.MaxValue)]

如果我删除了这一行,那么上面的代码可以运行,但不能同时运行两个。 请帮助

同一类型似乎不适用于多个渲染器。 我已经创建了我的自定义渲染器的子类型并覆盖了需要的方法。效果不错