gpt4 book ai didi

silverlight - 加载事件未完全加载

转载 作者:行者123 更新时间:2023-12-04 17:27:22 25 4
gpt4 key购买 nike

我觉得很傻,但我就是找不到答案。假设我想在 MainPage 加载时向用户显示一些消息。问题是,如果我在 Loaded 事件 (MessageBox.Show()) 上执行此操作,则在加载我的页面之前会显示弹出窗口,这会给用户留下此消息和黑色背景。这是一种沉闷的情况。任何事件都可以解决问题的想法。还有其他方法,例如后台 worker 或 NavigationInTransition_EndTransition 事件,但应该有更优雅的方法吗?

最佳答案

您可以轻松测试所有标准方法。我花了比写这篇文章更少的时间来做到这一点。

在页面构造函数中:

Loaded += new RoutedEventHandler(TestPage_Loaded);
LayoutUpdated += new EventHandler(TestPage_LayoutUpdated);

各自的方法:
    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");
});
}

还将调试写入添加到 OnNavigateTo()。

如果你的页面和我的一样复杂,那么你会得到类似的信息:
  • OnNavigatedTo
  • 布局更新
  • 已加载
  • 布局更新
  • 已加载 -> 开始调用
  • 多次布局更新

  • Last LayoutUpdated 将是最好的候选者,但如何检测它呢?因此,“Loaded -> BeginInvoke”似乎是琐碎中的最佳选择。

    您还可以使用页面上各个组件的 Loaded 事件。这也非常简单。它们有时可能会在第 4 步和第 5 步之间发生。

    如果以上选项都没有帮助(我不这么认为),则必须使用非标准逻辑。例如上面提到的一次性定时器,它会在一段时间后显示消息。或者将您的逻辑基于 LayoutUpdated 计数器。

    关于silverlight - 加载事件未完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511012/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com