我在每个选项卡内都有 MainWindow 和用户控件。当我在选项卡之间切换得太快或者有时甚至没有切换时,我在 main 中得到 null;
var main = UIHelper.FindVisualParent<MainWindow>(this);
为什么会发生这种情况你知道吗?假设它在 7-10 次尝试中显示错误,例如 main 为 null 一次。我在用户控件中使用它来访问 MainWindow 的控件。提前致谢。
在应用模板后,您必须等到您UserControl
被添加到VisualTree
ie 中......最简单的方法是等到Loaded
事件被触发。
然后,您可以安全地向上导航层次结构并查找您的MainWindow
.
但请记住,TabControl
当您切换选项卡时,消失的选项卡将卸载它们的视觉内容。
因此,您可能需要观看您的Unloaded
事件,以确保您不再在 VisualTree 中时UserControl
不会调用。VisualTreeHelper
如果你想阻止卸载行为,那么你可以修改 TabControl 行为......但原来TabControl
的设计是这样的,以有效地创建视觉效果。