Xamarin Forms用户控件:复合控件中的Forward Entry.Behaviors依赖项属性

时间:2018-11-24 20:02:26

标签: forms xamarin xamarin.forms dependency-properties behavior

我创建了一个用户控件,在其中放置了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); }
    }

0 个答案:

没有答案