从MainPage_Loaded运行时,VisualTreeHelper.GetChildrenCount返回0

时间:2012-04-24 22:50:24

标签: silverlight windows-phone-7

在我的WP7应用中,我使用这个人方法在TextBlock内找到ToggleButtonhttps://stackoverflow.com/a/1759923/1339857

当我在应用程序运行时拨打电话时,它可以正常工作 如果我尝试从MainPage_Loaded拨打完全相同的电话,FindChild会返回null

这是简单的电话

TextBlock myText = FindChild<TextBlock>(myToggle, "toggleTitle");  
myText.Text = "Some text";

看起来好像是因为VisualTreeHelper.GetChildrenCount返回0。

为什么在应用运行时却没有来自MainPage_Loaded的值?问题的目的是MainPage_Loaded等待应用程序加载后再触发事件吗?

由于

1 个答案:

答案 0 :(得分:5)

您可以使用的一个技巧是在Loaded事件上排队调用。因此,在MainPage_Loaded处理程序中将您的调用包装在Dispatcher.BeginInvoke中。

Dispatcher.BeginInvoke(() => {
  TextBlock myText = FindChild<TextBlock>(myToggle, "toggleTitle");  
  myText.Text = "Some text";
}

这会将您的调用添加到队列中,并在当前事件周期完成后调用它(这应该是在加载了所有子项时)。