我创建了一个自定义条目,如您在此处看到的:
public class ExtendedEntry : Entry
{
public static readonly BindableProperty BorderColorProperty =
BindableProperty.Create(nameof(BorderColor), typeof(Color),
typeof(ExtendedEntry), Color.Gray);
public Color BorderColor
{
get { return (Color) GetValue(BorderColorProperty); }
set { SetValue(BorderColorProperty, value); }
}
}
我创建一个这样的自定义渲染器:
[assembly: ExportRenderer(typeof(ExtendedEntry), typeof(MyEntryRenderer))]
namespace LogiStock.UWP.CustomRenderers
{
public class MyEntryRenderer : EntryRenderer
{
ExtendedEntry entry;
protected override void
OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
entry = (ExtendedEntry)Element;
if (Control != null)
{
var converter = new ColorConverter();
Control.BorderBrush =
(SolidColorBrush)converter.Convert(entry.BorderColor, null, null, null);
}
}
}
}
我在这样的xaml中使用了自定义控件:
<controls:ExtendedEntry BorderColor="{Binding ColorError, Mode=TwoWay}"/>
最后,如果没有输入,我将在视图模型中进行测试,如果输入为空,我将不显示颜色:
if (string.IsNullOrWhiteSpace(Libelle))
{
ColorError = Color.Red;
}
但是我控件的borderColor并没有改变。 我不知道我在做什么错..
答案 0 :(得分:0)
我的问题有答案:
我在渲染器中覆盖了OnElementPropertyChanged
,并在我的属性ÌNotifyPropertyChanged
的类中实现了接口ColorError