在UWP中安装应用程序时只显示一次页面

问题描述:

我正在开发一个UWP窗口10应用程序,并且我想要一个只在启动应用程序第一次启动时显示的页面。当应用程序在系统中第二次打开时不应显示。在UWP中安装应用程序时只显示一次页面

我已经在网上搜索了一下,但是找不到任何关于它的事情。

+2

我想你可以像这样实现它 - 在负责这个的localsettings中声明变量,让我们说* IsFirstTime * - 它应该是带缺省假值的布尔值。然后在app.xaml.cs中查找负责导航到MainPage的代码,如果它不是true,请检查您的IsFirstTime值,导航到您的一次性页面,如果为true,则导航到MainPage。 – Romasz

+0

你能解释一下,本地设置是什么意思? –

+2

请查看[此MSDN网站](https://msdn.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data) - 您可以轻松找到更多信息,通过谷歌搜索'localsettings uwp'。 – Romasz

我知道,我的回答可以提炼更多,但我有花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)); 
     } 

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

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

app.xaml.cs文件里面来显示rootFrame.Content == NULL的,如果条件和下面的代码替换里面的每一件事情。

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; 
      } 

我已经通过卸载我的应用程序试了一下,然后再次运行,看看是否显示起始页(和它显示了)。第二次,当我打开,MainPage显示)。

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); 
      } 
+0

+1,但我不确定是否不会在* FirstLaunchPage的*加载事件中的某个位置设置设置的值 - 以防导航失败。虽然这是非常罕见的情况。 – Romasz