2013-04-17 27 views
0

FrameworkElement.Loaded发生在容器被添加到树中时。当ItemsControl的任何/所有元素已被添加到VisualTree时是否触发了任何事件?

我需要根据添加到ItemsControl的所有数据绑定项的测量值进行一些自定义滚动。

可以连线到事件如LayoutUpdated,然后通过后裔追踪,计数的孩子,但这是相当繁重的工作。

当ItemsControl的任何/所有数据绑定元素已被添加到VisualTree中时是否触发了任何事件?

回答

1

你也可以继承ItemsControl的用于获取项目的最佳性能:

public class CustomListView : ListView 
{ 
    protected override DependencyObject GetContainerForItemOverride() 
    { 
     var listViewItem = base.GetContainerForItemOverride(); 

     // process the ListViewItem 

     return listViewItem; 
    } 
} 
+0

有用信息,但遗憾的是没有回答我的问题。 –

+0

这是假设'ItemsControl'是一个ListView。如果它只是一个'ItemsControl' - 你可以用我的代码中的contentPresenter替换ListView和ItemsControl和listViewItem。当你知道返回的容器数量是你期望加载的数量 - 那将是所有元素被添加到树中的时间。请记住,如果ItemsPanel是虚拟化面板 - 并非所有的项目实际上通常会同时加载。没有一个可靠的事件可以知道它们全部被添加了。 –

相关问题