Xamarin.forms 如何使用borderColor实现聚焦和取消聚焦

Xamarin.forms 如何使用borderColor实现聚焦和取消聚焦,xamarin.forms,Xamarin.forms,我希望其中一个条目有重点,它是用红色油漆,当它不必与绿色油漆 [assembly: ExportRenderer(typeof(MyEntry), typeof(ExtendedEntryRenderer))] namespace Layouts.iOS { class ExtendedEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEve

我希望其中一个条目有重点,它是用红色油漆,当它不必与绿色油漆

[assembly: ExportRenderer(typeof(MyEntry), typeof(ExtendedEntryRenderer))]
namespace Layouts.iOS
{
    class ExtendedEntryRenderer : EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (this.Control != null)
            {
                var borderLayer = new CALayer();
                borderLayer.Frame = new CoreGraphics.CGRect(0f, Frame.Height + 5, Frame.Width, 1f);
                borderLayer.BorderColor = UIColor.Red.CGColor;
                borderLayer.BackgroundColor= UIColor.Red.CGColor;
                borderLayer.BorderWidth = 1.0f;
                borderLayer.CornerRadius = 1;
                Control.Layer.AddSublayer(borderLayer);
                Control.BorderStyle = UITextBorderStyle.RoundedRect;
            }
        }
    }
}
[程序集:ExportRenderer(typeof(MyEntry)、typeof(ExtendedEntryRenderer))]
namespace Layouts.iOS
{
类ExtendedEntryRenderer:EntryRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(this.Control!=null)
{
var borderLayer=new CALayer();
borderLayer.Frame=newcoregraphics.CGRect(0f,Frame.Height+5,Frame.Width,1f);
borderLayer.BorderColor=UIColor.Red.CGColor;
borderLayer.BackgroundColor=UIColor.Red.CGColor;
borderLayer.BorderWidth=1.0f;
borderLayer.CornerRadius=1;
Control.Layer.AddSublayer(边界层);
Control.BorderStyle=UITextBorderStyle.RoundedRect;
}
}
}
}
当我使用这个习惯时,不要按照我想要的方式工作

<Entry Placeholder="Name" WidthRequest="200" Text="">
                <Entry.Triggers>
                                       <EventTrigger Event="Focused">
                                            <local:SizeText />
                                       </EventTrigger>
                                    </Entry.Triggers>
            </Entry>

使用
OnElementPropertyChanged
覆盖以获得焦点更改,并使用
OnElementChanged
覆盖以获得初始视图加载

设置边框颜色只需要设置
控件的
层的
边框宽度
边框颜色

iOS渲染器

[程序集:ExportRenderer(typeof(MyEntry)、typeof(CustomEntryRenderer))]
名称空间Sample.iOS
{
公共类CustomEntryRenderer:EntryRenderer
{
进入岗哨;
公共CustomEntryRenderer()
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(例如NewElement!=null)
{
formsEntry=e.NewElement;
this.Control.Layer.BorderWidth=1;
if(formsEntry.IsFocused)
{
this.Control.Layer.BorderColor=新的CGColor(255,0,0);
}
其他的
{
this.Control.Layer.BorderColor=新的CGColor(0,255,0);
}
}
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(发送方,e);
if(e.PropertyName==Entry.IsFocusedProperty.PropertyName)
{
if(formsEntry.IsFocused)
this.Control.Layer.BorderColor=新的CGColor(255,0,0);
其他的
this.Control.Layer.BorderColor=新的CGColor(0,255,0);
}
}
}
}
PCL中的MyEntry课程

名称空间示例
{
公共类MyEntry:入口
{
公共MyEntry()
{
}
}
}
在XAML中的用法

使用从Xaml中的条目派生的自定义创建的类。(使用
MyEntry
而不是
Entry



如有任何疑问,请发表评论。

您在Xaml中的何处使用MyEntry。粘贴时您是否错过了?@BKB Hi,如果您的问题稍后得到解决,请记住在有时间时标记:-)