C# 如何使Windows运行时页面在转到前台时刷新?

C# 如何使Windows运行时页面在转到前台时刷新?,c#,xaml,windows-runtime,winrt-xaml,windows-phone-8.1,C#,Xaml,Windows Runtime,Winrt Xaml,Windows Phone 8.1,我想在每次它进入前台时进行刷新/重新加载。我曾尝试向事件添加处理程序,但加载的事件仅在首次加载页面时触发,这与HTML的DOMContentLoaded事件不同。正确的方法是什么 谢谢 public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); this.NavigationCacheMode = NavigationCache

我想在每次它进入前台时进行刷新/重新加载。我曾尝试向事件添加处理程序,但加载的事件仅在首次加载页面时触发,这与HTML的DOMContentLoaded事件不同。正确的方法是什么

谢谢

public sealed partial class MainPage : Page {
    public MainPage() {
        this.InitializeComponent();

        this.NavigationCacheMode = NavigationCacheMode.Disabled;

        this.Loaded += (s, e) => {
            Debug.WriteLine("Loaded at " + DateTime.Now.ToString());
            // Code that should be executed when the page goes to the foreground each time
        };
    }
}

每次导航到一个页面时,都会调用
OnNavigatedTo
方法(如您在问题中提到的MSDN页面上所述)

您可以使用
NavigationEventArgs
来确定发生了什么类型的导航,并对其进行适当的处理。在您的情况下,您需要添加代码来刷新页面内容

正如Romasz所指出的,当应用程序恢复时,这对WinRT XAML堆栈没有帮助,因为在这种情况下,页面不会调用
OnNavigatedTo

为此,您必须检测应用程序中的应用程序恢复,并向页面(或其数据源/视图模型)发送消息以刷新


请注意应用程序恢复/暂停指南()。

您的代码似乎有问题。然而,我们不能帮助,除非我们有。否则,我们只是盲目猜测。看起来这是一个有效的问题,这是一个关于Windows运行时的相当简单的场景。我认为这是一个有效的问题,询问Windows运行时页面的加载事件,以及开发人员如何在每次显示到屏幕(前台)时刷新Windows运行时页面的内容。我添加了一个简单的事件处理程序示例,并阐明了预期的行为类似于HTML的DOMContentLoaded的工作方式。在运行时不是这样-应用程序恢复时不会调用OnNavigatedTo-。导航时-是的,但不是每次显示页面时都是这样。我仍然主要处理Silverlight堆栈。看来这是转学过程中的一大难题。谢谢你的评论和建议。看来我必须重写该方法并将逻辑放入其中。但是,我希望将页面的逻辑保持在同一个页面类中(就像处理HTML的DOMContentLoaded事件一样)。这是可能的吗?当然,在Application.OnActivated中,在框架中找到当前页面并调用包含您的逻辑的方法。我认为Application.OnActivated始终被调用,即使用户正常启动应用程序也是如此。然而,这是不正确的。只有被称为。我在OnLaunched的末尾添加了以下代码,它调用了我页面的一个方法来刷新内容:if(rootFrame.content.GetType()==typeof(MainPage)){await((MainPage)rootFrame.content.RefreshContent();}