如何找出Silverlight中添加新UIElement的时间

时间:2009-04-18 15:24:45

标签: wpf vb.net canvas silverlight-2.0 uielement

我正在设计一个继承自canvas的sliverlight中的用户控件。我有必要找出一个新的UIElement何时添加到MyBase的Children属性,但没有像“ItemAdded”这样的事件。由于我想为画布的子画面制作动画,我无法使用LayoutUpdated事件(它被击中了一百万次)。

2 个答案:

答案 0 :(得分:1)

当添加/删除子项Canvas时,它将自动失效,以便进行测量/排列循环。因此,您无需明确跟踪添加/删除操作。

相反,您只需要覆盖MeasureOverride方法,然后在方法内部,您可以查看子集,并注意已更改的内容。这是Silverlight比WPF更难使用的一个领域。您不能提供自己的集合来存储像WPF这样的子节点,也不能在现有的Children集合上挂钩事件。

答案 1 :(得分:0)

请注意,我没有Silverlight expierence,但在WPF中,您可以在控件上使用Loaded和Initialized事件。

有关a blog from Mike Hillberg from MSDN

的更多信息

初始化事件

  

Initialized事件通常会触发   当元素的属性具有   一切都已经确定。特别,   FrameworkElement的/ FrameworkContentElement上   实现ISupportInitialize,以及何时   该接口的EndInit方法   被称为IsInitialized属性   设置为true,并初始化   事件被解雇了。

加载活动

  

Loaded事件在元素触发时触发   不仅是初始化,而且是   即将被渲染。动机   对于Loaded事件是典型的   您想要做某些事情的场景   在您的应用程序初始化   装载时。