有没有办法为 RoundRectangle(密封)控件创建处理程序?

问题描述 投票:0回答:1

我正在努力将 Xamarin 表单应用程序迁移到 MAUI,如果您正在阅读本文,您可能知道,MAUI 有相当多的错误列表仍有待解决。我正在使用处理程序作为解决它们的方法,但我目前一直在尝试解决此错误: https://github.com/dotnet/maui/issues/14936

我试图在Android上为RoundRectangle创建一个处理程序,以修改

CornerRadius
属性,但发现该类是密封的。

有没有办法解决这个问题,而不必创建自己的控件来实现所有方法和属性?

而且我知道,这将在下一个补丁版本中以更好、更明确的方式修复,但是如果可行的话,我仍然想向这个组中知识渊博的人学习,以便当我遇到类似的情况时。

我还尝试为 Border 控件创建一个处理程序,但我找不到修改其 RoundRectangle 子项的方法。

maui handler
1个回答
0
投票

如果要对控件进行更改,基本上需要有一个处理程序。否则,您需要以其他方式覆盖,例如在每个平台上并使用它的特定方式来执行操作,并将其与您自己的处理程序绑定在一起。

关于

RoundRectangle
有一个处理程序供您使用。

public partial class RoundRectangleHandlerEx : RoundRectangleHandler
{
    public static new IPropertyMapper<RoundRectangle, RoundRectangleHandler> Mapper = new PropertyMapper<RoundRectangle, RoundRectangleHandler>(RoundRectangleHandler.Mapper)
    {
        [nameof(RoundRectangle.CornerRadius)] = MapCornerRadius
    };

    public RoundRectangleHandlerEx() : base(Mapper)
    {

    }

    public RoundRectangleHandlerEx(IPropertyMapper mapper) : base(mapper ?? Mapper)
    {

    }

    public new static void MapCornerRadius(IShapeViewHandler handler, RoundRectangle roundRectangle)
    {
        handler.PlatformView?.InvalidateShape(roundRectangle);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.