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,如果您的问题稍后得到解决,请记住在有时间时标记:-)