将自定义属性/属性添加到现有控件

时间:2017-11-06 07:01:50

标签: xamarin xamarin.forms

是否可以向现有控件添加自定义属性,以便我可以绑定其值(mvvm)?

例如,我想将DepartmentId的属性添加到Label

1 个答案:

答案 0 :(得分:0)

您可以在注册自定义可绑定属性时创建扩展Label的自定义控件 - 或创建attached properties

例如,创建一个自定义附加属性,如下所示:

public class Ex
{
    public static readonly BindableProperty DepartmentIdProperty = 
        BindableProperty.CreateAttached("DepartmentId", typeof(int), typeof(Ex), defaultValue: -1);

    public static int GetDepartmentId(BindableObject view)
    {
        return (int)view.GetValue(DepartmentIdProperty);
    }

    public static void SetDepartmentId(BindableObject view, int value)
    {
        view.SetValue(DepartmentIdProperty, value);
    }
}

Label中的示例用法如下:

<Label x:Name="testLabel" local:Ex.DepartmentId="34" .. />

或者,

<Label x:Name="testLabel" local:Ex.DepartmentId="{Binding DeptId}" .. />

您可以使用定义的访问器方法访问此值:

var assignedId = Ex.GetDepartmentId(testLabel);
相关问题