Mir*_*iro 5 silverlight windows-phone-7
我觉得很傻,但我找不到答案.假设我想在MainPage加载时向用户显示一些消息.问题是,如果我在Loaded事件(MessageBox.Show())上执行此操作,弹出窗口会在我的页面加载之前显示,这会使用户留下此消息和黑色背景.这是一种沉闷的情况.任何事件的想法可以做到这一点.还有其他方法,如后台工作者或NavigationInTransition_EndTransition事件,但应该有更优雅的方式?
您可以轻松测试所有标准方法.我花了这么多时间来写这篇文章.
在页面构造函数中:
Loaded += new RoutedEventHandler(TestPage_Loaded);
LayoutUpdated += new EventHandler(TestPage_LayoutUpdated);
Run Code Online (Sandbox Code Playgroud)
各方法:
void TestPage_LayoutUpdated(object sender, EventArgs e)
{
Debug.WriteLine("LayoutUpdated");
}
void TestPage_Loaded(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Loaded");
Dispatcher.BeginInvoke(() =>
{
Debug.WriteLine("Loaded -> BeginInvoke");
});
}
Run Code Online (Sandbox Code Playgroud)
添加调试写入OnNavigateTo()也是如此.
如果您的页面与我的页面相似,那么您可以获得如下内容:
最后的LayoutUpdated将是最佳候选者,但如何检测它?因此,"Loaded - > BeginInvoke"似乎是琐碎的最佳选择.
您还可以使用页面上各个组件的已加载事件.这也很简单.它们有时可能发生在第4步和第5步之间.
如果上述选项都没有帮助(我不这么认为),则必须使用非标准逻辑.如上面提到的一次性定时器,在一段时间后显示消息.或者将您的逻辑基于LayoutUpdated计数器.
| 归档时间: |
|
| 查看次数: |
3089 次 |
| 最近记录: |