在 UWP 中安装应用时仅显示页面一次



我正在开发一个UWP Windows 10应用程序,我希望有一个仅在首次启动应用程序开始时显示的页面。在系统中第二次打开应用程序时,不应显示它。

我在网上搜索了一下,但找不到任何关于它的东西。

我知道我的答案可以更完善,但我已经花了 2 分钟,它对我有用。我在 StartPage.xaml.cs 文件中添加了一个页面加载事件,并在其中添加了以下代码。

 if (localSettings.Values["IsFirstTime"] == null)
        {
            localSettings.Values["IsFirstTime"] = true;
        }
        if ((bool)localSettings.Values["IsFirstTime"])
        {
            localSettings.Values["IsFirstTime"] = false;
            this.Frame.Navigate(typeof(MainPage));
        }

请确保在类级别创建 localSettings 对象(类型为 ApplicationDataContainer)。现在在 App.xaml.cs 中,我为本地设置添加了全局变量,如下所示。

 Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

在 app.xaml 中.cs文件进入显示 rootFrame.Content == null 的 if 条件,并用以下代码替换其中的所有内容。

 object value = localSettings.Values["IsFirstTime"];
            if (localSettings.Values["IsFirstTime"] != null)
            {
                if ((bool)value)
                {
                    rootFrame.Navigate(typeof(StartPage), e.Arguments);
                    localSettings.Values["IsFirstTime"] = false;
                }
                else
                {
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }
            }
            else
            {
                rootFrame.Navigate(typeof(StartPage), e.Arguments);
                localSettings.Values["IsFirstTime"] = false;
            }

我已经通过卸载我的应用程序并再次运行以查看是否显示起始页(并且它显示)来尝试它。第二次打开时,显示主页)。

App.xaml.cs查找OnLaunched处理程序。有以下几行代码用于"切换"页面:

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

正如@Romasz评论中建议的那样,您可以在此处添加具有本地(或更好的漫游)存储的其他逻辑,以检查应用程序是否首次启动:

            var roamingSettings = ApplicationData.Current.RoamingSettings;
            if (roamingSettings.Values.ContainsKey("NotFirstTimeLaunch"))
            {
                rootFrame.Navigate(typeof(MainPage), e.Arguments);
            } else
            {
                roamingSettings.Values["NotFirstTimeLaunch"] = true;
                rootFrame.Navigate(typeof(FirstLaunchPage), e.Arguments);
            }

最新更新