我在每个标签中都有MainWindow和用户控件。当我在制表符之间切换得太快时,有时即使没有切换,我的主值也是空的;
var main = UIHelper.FindVisualParent<MainWindow>(this);你知道为什么会发生这种事?假设它在7-10次尝试中显示错误,例如main为null。我在用户控件中使用它来访问MainWindow控件。提前谢谢。
发布于 2013-06-17 13:34:02
您必须等到UserControl添加到VisualTree之后,即在模板成为applied....the之后,最简单的方法是等待Loaded事件被触发。
然后,您可以安全地在层次结构上导航并查找您的MainWindow。
不过,请记住,使用TabControl切换选项卡时,消失的选项卡将卸载其Visual。
因此,您可能需要查看Unloaded事件在您的UserControl上,以确保您不再在VisualTree中调用VisualTreeHelper。
如果您想防止卸载行为,那么您可以修改TabControl behaviour...but,原始TabControl是这样设计的,以便高效地创建可视化。
https://stackoverflow.com/questions/17147567
复制相似问题