首页 > 解决方案 > 如何使用 xamarin 表单从条目控件中删除边框

问题描述

如何从带有以下控件的 xamarin 控件的输入框中删除边框。

<Entry Text="" />

在此处输入图像描述

目前我看到文本框的边框很薄,我没有看到任何要删除的边框属性。

请告诉我,如何禁用此功能。

标签: xamarin.forms

解决方案


您无法通过 Xamarin.Forms 操作控件的某些属性,您必须实现效果自定义渲染器。在您的情况下效果可能很好,但由于我更精通自定义渲染器,我将向您展示如何使用自定义渲染器实现您想要的效果。

您必须创建一个派生自EntryRenderer该覆盖的类OnElementChanged

public class CustomEntryRenderer : EntryRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        this.Control.LeftView = new UIView(new CGRect(0, 0, 8, this.Control.Frame.Height));
        this.Control.RightView = new UIView(new CGRect(0, 0, 8, this.Control.Frame.Height));
        this.Control.LeftViewMode = UITextFieldViewMode.Always;
        this.Control.RightViewMode = UITextFieldViewMode.Always;

        this.Control.BorderStyle = UITextBorderStyle.None;
        this.Element.HeightRequest = 30;
    }
}

首先,通过设置本机控件的theLeftView和 the ,向控件添加了一些填充(否则看起来很丑) 。RightView无论如何,更有趣的部分是BorderStyle通过设置本机控件的此属性,您可以删除控件的边框。

您要做的最后一件事是说 Xamarin.Forms 以使用该渲染器。在文件的全局范围内(在命名空间声明之外)使用以下属性:

[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))]

如果您不希望将样式应用于所有条目,则必须定义一个CustomEntry派生自EntryXamarin.Forms 项目的类,将上面显示的行更改为

[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]

请注意:这是 iOS 的实现,但对于 Android 来说基本上是一样的。


推荐阅读