Я создал пользовательский элемент управления, в который поместил запись Xamarin.Forms.Идея состоит в том, чтобы обернуть исходную запись некоторой дополнительной функциональностью, такой как ошибка проверки ввода, изображения и т. Д., И использовать составной элемент управления во всем приложении Xamarin.Forms.Пока ничего особенного.
Все соответствующие свойства зависимостей Entry перенаправляются в составной элемент управления обтекания, например Text, Style.Теперь проблема возникает, когда я хочу предоставить свойство зависимостей для Behavoirs, которое я хочу перенаправить во вложенный элемент управления Entry.
Есть ли у кого-нибудь опыт «пересылки» вложенных свойств зависимостей, в частности, с Behaviors?
Обновление 2018-11-25:
ValidatableEntry.xaml - это таблица, которая содержит вложенный элемент управления Entry.Свойства Text и Placeholder в 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.Вопрос в том, как я могу переслать свойство Behaviors?Я попробовал следующее, которое не работает:
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); }
}