0

我在每个选项卡内都有 MainWindow 和用户控件。当我在选项卡之间切换得太快或者有时甚至没有切换时,我在 main 中得到 null;

var main = UIHelper.FindVisualParent<MainWindow>(this);

为什么会发生这种情况你知道吗?假设它在 7-10 次尝试中显示错误,例如 main 为 null 一次。我在用户控件中使用它来访问 MainWindow 的控件。提前致谢。

4

1 回答 1

2

在应用模板后,您必须等到您UserControl被添加到VisualTreeie 中......最简单的方法是等到Loaded事件被触发。

然后,您可以安全地向上导航层次结构并查找您的MainWindow.

但请记住,TabControl当您切换选项卡时,消失的选项卡将卸载它们的视觉内容。

因此,您可能需要观看您的Unloaded事件,以确保您不再在 VisualTree 中时UserControl不会调用。VisualTreeHelper

如果你想阻止卸载行为,那么你可以修改 TabControl 行为......但原来TabControl的设计是这样的,以有效地创建视觉效果。

于 2013-06-17T13:34:02.347 回答