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…};是的,但对我不起作用。我想我将以一种丑陋的方式实现这一点——隐藏和显示条目,直到找到更好的解决方案。非常感谢你!