我遇到了一个奇怪的问题,我不确定在哪里进行调试。我有一个Treeview,ItemTemplate
设置为HierarchicalDataTemplate
设置为CustomTreeViewItem
的实例,如下所示。我加载了15个测试视图模型项,绑定正确地更新了控件生成的项。我可以通过15次调用CustomTreeViewItem
构造函数。
public class CustomTreeViewItem : TreeViewItem
{
public CustomTreeViewItem() : base()
{
this.Loaded += CustomTreeViewItem_Loaded;
}
private void CustomTreeViewItem_Loaded(object sender, RoutedEventArgs e)
{
//In a bound collection of 15 items, we arrive here exactly once.
}
}
我们从预期的15开始到达_Loaded处理程序.UI布局并呈现并且第一个CustomTreeViewItem.Loaded
处理程序触发。但是剩下的14个虽然被安排和渲染就像第一个一样,但并没有开火。
我在屏幕上看到了15个项目。我可以使用实时可视树检查15中的任何一个并看到FrameworkElement.IsLoaded
= true。
知道我们如何到达IsLoaded但是从不调用处理程序?特别是一个意外的事实,一个正确工作但不是其他完全相同的构造函数?