我正在设计一个继承自canvas的sliverlight中的用户控件。我有必要找出一个新的UIElement
何时添加到MyBase的Children属性,但没有像“ItemAdded”这样的事件。由于我想为画布的子画面制作动画,我无法使用LayoutUpdated
事件(它被击中了一百万次)。
答案 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事件是典型的 您想要做某些事情的场景 在您的应用程序初始化 装载时。