是否可以向现有控件添加自定义属性,以便我可以绑定其值(mvvm)?
例如,我想将DepartmentId
的属性添加到Label
。
答案 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);