如何使用Xamarin表单从条目控件中删除边框

Ary*_*n M 4 xamarin.forms

如何使用以下控件的xamarin控件从输入框删除边框。

<Entry Text="" />
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

目前,我在文本框上看到一个细边框,在这里看不到要删除的任何border属性。

请让我知道如何禁用此功能。

Pau*_*her 10

控件的某些属性无法通过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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))]
Run Code Online (Sandbox Code Playgroud)

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

[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]
Run Code Online (Sandbox Code Playgroud)

请注意:这是iOS的实现,但基本上与Android相同。