故事背景:
我自定义了一个元素,我想在构建元素的同时,设置Bindding,于是我把设置Bindding的部分写到
了元素的构造函数之中。
我在绑定的过程中,是涉及到了元素的某些属性的,但是在元素的构造函数被调用时,元素的很多属性还没有准备好(比如在Xaml中赋值的属性)从而导致binding工作不正常。
于是我想到了重写Onloaded方法,结果发现元素并没有这个方法可以被重新。
但是OnInitialized这个方法被我找到。这里截个图,介绍loaded和Initialized事件的区别:

最后,我重写OnInitialized如下:
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
//绑定必须写道OnInitialized中,而不能是构造函数中,OnInitialized被触发,表示该控件已经构造完成
SetBackgroundBinding();
SetTextBinding();
}
版权声明:本文为songhuangong123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。