You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Uno Platform,如何替代Xamarin Forms的OnAppearing方法

在Uno Platform中实现返回页面时重新加载数据

要在Uno Platform中实现类似Xamarin Forms里OnAppearing在返回页面时触发的效果,需要基于UWP导航模型调整实现逻辑,以下是具体方案:

1. 确保正确的导航结构

首先确认应用使用Frame作为根导航容器,这是Uno Platform默认的导航方式。在App.xaml.cs中完成初始化:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    var rootFrame = Window.Current.Content as Frame;
    if (rootFrame == null)
    {
        rootFrame = new Frame();
        Window.Current.Content = rootFrame;
    }

    if (rootFrame.Content == null)
    {
        rootFrame.Navigate(typeof(MainPage), e.Arguments);
    }

    Window.Current.Activate();
}

2. 重写OnNavigatedTo处理数据加载

在MainPage中重写OnNavigatedTo方法,该方法会在页面被导航到(包括从其他页面返回时)触发。可通过NavigationEventArgs的NavigationMode属性区分导航场景:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    
    // 首次加载或返回时都执行数据加载
    LoadData();

    // 若仅需在返回时加载,可添加判断
    // if (e.NavigationMode == NavigationMode.Back)
    // {
    //     LoadData();
    // }
}

private void LoadData()
{
    // 编写你的数据加载逻辑
}

3. 规范页面跳转与返回逻辑

从MainPage跳转到SecondPage时,使用Frame.Navigate:

private void NavigateToSecondPage(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(SecondPage));
}

在SecondPage中返回主页面,调用Frame.GoBack:

private void GoBackToMainPage(object sender, RoutedEventArgs e)
{
    if (Frame.CanGoBack)
    {
        Frame.GoBack();
    }
}

4. NavigationCacheMode的注意事项

若设置NavigationCacheMode.Required,页面实例会被缓存,但返回时OnNavigatedTo依然会触发(此时NavigationMode为Back)。如果不需要缓存页面,保持默认的Disabled即可,每次导航到页面都会重新实例化并触发OnNavigatedTo。

内容的提问来源于stack exchange,提问作者Erick Velasco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:27:30