我创建了一个用户控件,在其中放置了Xamarin.Forms条目。这个想法是用一些附加的功能(例如输入验证错误,图像等)包装原始Entry,然后在我的Xamarin.Forms应用中使用复合控件。到目前为止没有什么特别的。
Entry的所有相关依赖项属性都转发给包装复合控件,例如文字,样式。现在,当我想公开Behavoirs的依赖项属性并将其转发到嵌套的Entry控件时,问题就来了。
有人在“转发”嵌套依赖项属性方面有经验吗,尤其是在“行为”方面?
更新2018-11-25:
ValidatableEntry.xaml是一个网格,其中包含嵌套的Entry控件。 Entry的文本和占位符属性绑定到本地依赖项属性,我将此方法称为“属性转发”。
<?xml version="1.0" encoding="UTF-8"?>
<Grid
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ValidatableEntry"
x:Name="Control">
<Entry
Grid.Row="0"
x:Name="Entry"
Text="{Binding Text, Source={x:Reference Control}, Mode=TwoWay}"
Placeholder="{Binding Placeholder, Source={x:Reference Control}, Mode=OneWay}">
</Entry>
</Grid>
ValidatableEntry.xaml.cs包含公开的依赖项属性TextPropery和PlaceholderProperty。问题是:如何转发“行为”属性?我尝试了以下操作,但不起作用:
public new static readonly BindableProperty BehaviorsProperty =
BindableProperty.Create(
nameof(Behaviors),
typeof(IList<Behavior>),
typeof(ValidatableEntry),
default(IList<Behavior>),
BindingMode.OneWayToSource);
public new IList<Behavior> Behaviors
{
get { return (IList<Behavior>)this.Entry.GetValue(VisualElement.BehaviorsProperty); }
}