我正在开发一个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);
}