是否可以更改xamarin表单中单个条目的边界?

时间:2017-04-30 16:09:38

标签: xamarin.forms

我想知道是否有人可以指出我如何更改单个条目?我已经制作了一个自定义渲染器,可以将条目的边框更改为红色,但我真正想要的只是在验证从黑色变为红色时才更改一个条目。

参赛作品图片:

enter image description here

我的渲染器:

[assembly: ExportRenderer(typeof(App.RedFrameEntry), typeof(RedFrameEntryRenderer))]
namespace App.iOS
{
    public class RedFrameEntryRenderer : EntryRenderer
    {

        public bool isInvalid = false;

        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.BorderStyle = UITextBorderStyle.RoundedRect;
                Control.Layer.CornerRadius = 4;
                Control.Layer.BorderColor = Color.FromHex("#c60303").ToCGColor();
                Control.Layer.BorderWidth = 0;
                if (isInvalid)
                {
                    Control.Layer.BorderWidth = 2;
                }
            }
        }
        protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
        }
    }
}

我的代码:

private void ChangeEntryOnValidationFail(string text, Entry entry, int numberOfChar)
{
    if (String.IsNullOrEmpty(text) || text.Length < numberOfChar)
    {
        // TODO: Change to RedFrameEntry
    }
    else
    {
        // TODO: Change back to default
    }
}

1 个答案:

答案 0 :(得分:1)

我建议您创建一个CustomEntry类,其基类为Entry,因此您可以随时调用CustomEntry而不是更改所有条目的边框需要它。

public class CustomEntry : Entry{
}

然后使用:

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

希望它有所帮助!