1

在我的 WP7 应用程序中,我正在使用这种方法TextBlockToggleButton. https://stackoverflow.com/a/1759923/1339857

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

这是简单的调用

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

看起来是因为VisualTreeHelper.GetChildrenCount正在返回 0。

为什么当应用程序正在运行而不是 from 时它会有一个值MainPage_LoadedMainPage_Loaded在触发事件之前等待应用程序加载的目的不是吗?

谢谢

4

1 回答 1

5

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

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

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

于 2012-04-24T23:02:10.940 回答