2

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

4

2 回答 2

1

添加/删除子项时Canvas,它将自动失效,从而发生测量/排列循环。因此,您无需显式跟踪添加/删除操作。

相反,您只需要覆盖 MeasureOverride 方法,然后在该方法中您可以查看 Children 集并注意发生了哪些变化。这是 Silverlight 比 WPF 更难使用的一个领域。您不能提供自己的集合来存储像 WPF 这样的子项,也不能在现有的 Children 集合上挂钩事件。

于 2009-04-18T15:49:30.403 回答
0

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

有关MSDN 的 Mike Hillberg 博客的更多信息

初始化事件

Initialized 事件通常在元素的属性全部设置后触发。具体来说,FrameworkElement/FrameworkContentElement 实现 ISupportInitialize,当调用该接口的 EndInit 方法时,IsInitialized 属性设置为 true,并触发 Initialized 事件。

加载事件

当一个元素不仅被初始化,而且即将被渲染时,Loaded 事件就会触发。Loaded 事件的动机是您希望在加载时在应用程序中进行一些初始化的典型场景。

于 2009-08-11T13:17:19.027 回答