当我在页面加载事件中使用可视化树助手时,我不会获得任何元素并获得空异常,但是当在ButtonClick上使用它时,会得到正确的结果。
怎么处理呢?
这个函数在ButtonClick上运行得很好,但在Page_Loaded_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;
}
}
}
}发布于 2015-09-09 18:26:12
实际上,我不记得了,但让我想想。也许“加载的页面”并不能保证您的整个 UI都被构造了?也许页面的构建和加载是为了显示一些最初的动画/等等,并且只是在一段时间之后才加载了实际的内容?
引用:
相反,将加载的事件处理程序附加到新加载页面的内容的根目录,并在加载的事件处理程序中执行任何元素操作、状态更改、事件连接等等。
注意,他们说的是“页面内容”,而不是“页面内容”。试试看。
如果没有帮助,您应该能够使用加载的按钮(或任何其他附近的控件)。
如果即使这样也没有帮助,您将需要检查哪些模板被该页面使用,以及它们何时实际被实例化,并且只在那个时间点之后才使用您的ui树扫描器。
https://stackoverflow.com/questions/32486344
复制相似问题