不能在页面加载事件中使用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;
                }
            }
        }
    }

不能在页面加载事件中使用Visualtreehelper,也不能获取任何事件

实际上,我不记得了,但是让我们看看。也许"页面加载"并不能保证你的整个 UI被构造?也许页面是构造和加载显示一些初始动画/等,只有在一段时间后实际的内容被加载?

查看本文

:

相反,在新加载页面的内容的根处附加一个已加载的事件处理程序,并在已加载的事件处理程序 中执行任何元素操作、状态更改、事件连接等

注意他们说的是"of the page's content"而不是"of the page"。试试。

如果它没有帮助,你应该能够使用你提到的按钮加载(或任何其他附近的控件)。

如果这些都没有帮助,您将需要检查该页面使用了哪些模板,以及它们实际实例化的时间,并仅在该时间点之后使用ui-tree-scanner。