Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 是否可以更改xamarin表单中单个条目的边界?_Xamarin.forms - Fatal编程技术网

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

Xamarin.forms 是否可以更改xamarin表单中单个条目的边界?,xamarin.forms,Xamarin.forms,我想知道是否有人能指出我如何更改单个条目?。我制作了一个自定义渲染器,它将一个条目的边框更改为红色,但我真正想要的是,如果验证失败,只需将一个条目从黑色更改为红色 参赛作品图片: 我的渲染器: [assembly: ExportRenderer(typeof(App.RedFrameEntry), typeof(RedFrameEntryRenderer))] namespace App.iOS { public class RedFrameEntryRenderer : EntryRe

我想知道是否有人能指出我如何更改单个条目?。我制作了一个自定义渲染器,它将一个条目的边框更改为红色,但我真正想要的是,如果验证失败,只需将一个条目从黑色更改为红色

参赛作品图片:

我的渲染器:

[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
    }
}
我建议您创建一个CustomEntry类,它有一个Entry基类,因此您可以在需要时调用CustomEntry,而不是更改所有条目的边框

public class CustomEntry : Entry{
}
然后使用:

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

希望有帮助

请不要将代码作为图像发布。你应该总是在问题中张贴代码。你好,谢谢你的回答。我遇到的问题是,我不确定如何在进行验证的xaml.cs中调用CustomEntry。请检查CustomEntry类的命名空间,然后使用它调用xaml上的命名空间。例如xmlns:custom=clr名称空间:TheNamespace;assembly=theassemblynotreallyneed然后像这样调用它有没有办法在xaml.cs中将现有条目普通条目更改为CustomEntry?我不太确定。你试过这样做吗?yourEntry=new CustomEntry{…properties…};是的,但对我不起作用。我想我将以一种丑陋的方式实现这一点——隐藏和显示条目,直到找到更好的解决方案。非常感谢你!