【问题标题】:How do I Monitor changes in an ItemsControl using Silverlight?如何使用 Silverlight 监视 ItemsControl 中的更改?
【发布时间】:2009-02-05 14:49:26
【问题描述】:
我有一个绑定到 ObservableCollection 的 ItemsControl。当可观察集合发生变化时,我有一个事件处理程序来查看 ItemsControl 的子项。不幸的是,当时 ItemsControl 还没有添加新项目(这是可以理解的)。我如何知道 ItemsControl 何时完成添加新的子控件?
换句话说,如果我使用 ItemsControl 来显示文本框列表,当新的 TextBox 控件添加到显示器时如何通知我?
【问题讨论】:
标签:
silverlight
itemscontrol
【解决方案1】:
好吧,我最终深入控件以找到 ContentPresenter。然后我附加到 LayoutUpdated 事件,该事件对孩子进行计数以查看它是否发生了变化。
这是一种奇怪的解决方案,但确实有效。
【解决方案2】:
如果您将 ObservableCollection 绑定到 ItemsControl,它恰好是 silverlight WCF 客户端生成的集合类型,那么您可以监听 ObservableCollection 引发的事件。
这实际上是 Silverlight 知道是否重新渲染的方式。您可以独立于 UI 对集合进行操作,并且 UI 行为正常。