WEB开发网
开发学院图形图像Flash My Silverlight系列(7)—— Control的Loaded事件... 阅读

My Silverlight系列(7)—— Control的Loaded事件与OnApplyTemplate

 2009-04-25 12:04:42 来源:WEB开发网   
核心提示: 最终运行时截张VS的图:可能到了这大家还没怎么看懂这些代码和这个图说明了什么,那么我解释一下,My Silverlight系列(7)—— Control的Loaded事件与OnApplyTemplate(3),首先,Page类的OnApplayTemplate()方法没有执行,我当然不相信

最终运行时截张VS的图:

My Silverlight系列(7)—— Control的Loaded事件与OnApplyTemplate

可能到了这大家还没怎么看懂这些代码和这个图说明了什么,那么我解释一下。首先,Page类的OnApplayTemplate()方法没有执行,是因为它没有Template;然后,从Button、CheckBox以及Page的Loaded事件来看,CheckBox和Button作为Page的子控件,先Load完毕,而作为Parent的Page要更晚一些Load;再然后,Button和CheckBox的Loaded事件都比ApplyTemplate早;最后,作为Button的Content的CheckBox加载最晚,而且它ApplyTemplate要比Loaded早。

这个最后一条,就是为什么我说Loaded与ApplyTemplate的早晚不一定的原因。从上述的先后顺序上,我们至少可以看出来三点:第一,子控件总是先于父控件触发Loaded事件的;第二,应用了ContentPresender的控件,它的Content如果也是一个控件,那么这个控件是要比父控件Loaded晚的;第三,第二种情况下,Content那个控件的ApplyTemplate要比Loaded早,而不在那种情况下,控件的Loaded事件是比ApplyTemplate早的。

有些事情微软做得总是让人匪夷所思,比如说ApplyTemplate居然比Loaded晚这个事情,我在WPF上测了同样的东西,ApplyTemplate总是要比Loaded早的,这也合情合理,应用完模版之后再告诉别人我已经加载完了,这是正常人都有的逻辑,但是在Silverlight中,大部分情况都是反过来的。我当然不相信设计Silverlight那哥们在写架构的时候把调用顺序给弄倒了,微软这么做总是有它的理由的,只是理由是什么呢?是不是桌面上和浏览器上绘图会有区别呢?这些我就不得而知了,没准只有微软写OS和IE内核的人才知道……

上一页  1 2 3 4  下一页

Tags:My Silverlight 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接