不能在页面加载事件中使用Visualtreehelper,也不能获取任何事件
本文关键字:事件 Visualtreehelper 也不能 任何 获取 加载 不能 | 更新日期: 2023-09-27 18:12:11
当我在页面加载事件中使用visualtreehelper时,我没有得到任何元素并获得空异常,但当在ButtonClick上使用它时得到了正确的结果。
如何处理?
这个函数在ButtonClick上工作得很好,但在page_loadd_event上不行
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj)
where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
实际上,我不记得了,但是让我们看看。也许"页面加载"并不能保证你的整个 UI被构造?也许页面是构造和加载显示一些初始动画/等,只有在一段时间后实际的内容被加载?
查看本文
:
相反,在新加载页面的内容的根处附加一个已加载的事件处理程序,并在已加载的事件处理程序 中执行任何元素操作、状态更改、事件连接等
注意他们说的是"of the page's content"而不是"of the page"。试试。
如果它没有帮助,你应该能够使用你提到的按钮加载(或任何其他附近的控件)。
如果这些都没有帮助,您将需要检查该页面使用了哪些模板,以及它们实际实例化的时间,并仅在该时间点之后使用ui-tree-scanner。