在Xamarin.Forms中,我通常会使用类似" ButtonExt"等类名为按钮编写自定义渲染器。是否可以使用原始名称(我猜覆盖)元素来编写自定义渲染器,例如" Button"?
基本上,我希望能够为我的应用中的所有按钮添加水平填充,但无需将所有Button
重命名为ButtonExt
(Xamarin中的按钮没有Padding属性。形式)。换句话说,我希望能够说new Button { Padding = 20 }
而不必说new ButtonExt { Padding = 20 }
(项目是C#,而不是XAML)。
通常,在iOS项目中,我有:
[assembly: ExportRenderer(typeof(ButtonExt), typeof(ButtonExtRenderer))]
namespace StoreFulfillment.iOS
{
public class ButtonExtRenderer : ButtonRenderer
在共享项目中,我有:
using MySharedProject;
using Xamarin.Forms;
namespace MySharedProject.Renderers
{
public class ButtonExt : Button
{
...
然后我说new ButtonExt { Padding = 20 }
。但是为了能够写new Button { Padding = 20 }
,我无法写public class Button : Button
...所以我该如何做到这一点?
答案 0 :(得分:2)
当然!只需将其注册为普通Button
类型,并确保调用您覆盖的所有基本方法,以便原始工作也保持不变。
因此,注册渲染器的属性将如下所示:
[assembly: ExportRenderer(typeof(Button), typeof(YourButtonRenderer))]
此外,请确保您确实需要自定义渲染器。如果您只想要一个简单的样式问题,请查看Xamarin.Forms styling possibilities,尤其是隐式样式。