0
既存のコントロールにカスタムプロパティを追加して、その値(mvvm)をバインドすることはできますか?既存のコントロールにカスタムプロパティ/属性を追加する
たとえば、DepartmentId
という名前のプロパティをLabel
に追加したいとします。
既存のコントロールにカスタムプロパティを追加して、その値(mvvm)をバインドすることはできますか?既存のコントロールにカスタムプロパティ/属性を追加する
たとえば、DepartmentId
という名前のプロパティをLabel
に追加したいとします。
Label
を拡張するカスタムコントロールを作成するか、カスタムバインド可能プロパティを登録するか、attached propertiesを作成することができます。例えば、については
次のようにカスタム添付プロパティを作成します。
<Label x:Name="testLabel" local:Ex.DepartmentId="34" .. />
あるいは、
<Label x:Name="testLabel" local:Ex.DepartmentId="{Binding DeptId}" .. />
することができます:Label
で
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);
}
}
使用例は次のようになりますアクセサメソッドを使用してこの値にアクセスするed:
var assignedId = Ex.GetDepartmentId(testLabel);