2011-05-20 54 views
0

嗨,我正在构建一个CustomControl,它有一堆依赖项属性和几个可视化部分,例如Canvas,TextBox等。 问题是,一旦赋值给依赖项属性,我需要对可视元素执行某些操作,即我需要将新的依赖属性的值添加到Canvas,但是当绑定开始并赋值时,ControlTemplate尚未应用,因此它崩溃。应用ControlTemplate后发生强制绑定?

什么是解决这个问题的好方法?

谢谢。

回答

0

简单的解决方案是在依赖项属性处理程序中进行空检查以防止崩溃,并覆盖相关方法,在该方法中知道构建可视化树(最有可能是OnApplyTemplate),并在那里执行相同的操作来初始化你的视觉效果。

+0

Duh,它非常简单,我的问题是我仍然不确定WPF控件的生命周期如何。在Dependency属性的Changed事件处理程序上启用断点我可以看到它被多次设置,一些空值以及最后从我的绑定中设置的值。我认为如果我在那里做了一个空检查,我会错过绑定值。无论如何,谢谢。 – 2011-05-20 16:51:57

+0

那么,组件的生命周期不是精确的科学,有很多因素到位。就像你的控件有多深的嵌套,它有什么样的父母(例如ListBox比起简单的Grid有自己的生活等),你使用的是什么样的框架,你如何初始化你的ViewModel等等。 – dain 2011-05-20 17:02:46