如何检查元素的所有属性是否都已加载?

时间:2016-06-29 15:18:05

标签: xamarin xamarin.forms

我正在创建一些自定义的View元素:

public class ExtendableButtonList : StackLayout
{
    public static readonly BindableProperty NewSlotNameProperty = BindableProperty.Create(
      propertyName: "NewSlotName",
      returnType: typeof(string),
      declaringType: typeof(ExtendableButtonList),
      defaultValue: default(string));

    public string NewSlotName
    {
        get { return (string)GetValue(NewSlotNameProperty); }
        set { SetValue(NewSlotNameProperty, value); }
    }

    public delegate void OnLoadHandler(ExtendableButtonList ebl);
    public event OnLoadHandler OnLoadEvent;

    public ExtendableButtonList (){
       //not all properies are loaded at this point
    }
    [...]
}

我需要对通过XAML传递给此对象的属性执行一些操作。不幸的是,当调用ExtendableButtonList类的构造函数时,此时并不是所有的BindableProperties都被加载。它们会在稍后出现。

我如何知道此对象中何时加载了所有属性?何时调用OnLoadEvent让我的应用程序知道此对象已准备好进一步使用?

1 个答案:

答案 0 :(得分:1)

在这种特殊情况下,您应该覆盖OnBindingContextChanged来进行验证。

您可以看到here关于OnBindingContextChanged

的一个很好的解释