如何在 C# 中设置“首次启动视图”
本文关键字:启动 视图 设置 | 更新日期: 2023-09-27 18:32:57
>我到处搜索,但我找不到针对我问题的教程。我想设置一个页面,以便在首次启动应用程序时显示。像这样:
首次发布:Greeting.xaml>Setting.xaml>MainPage.xaml
常规启动直接进入主页。
我该怎么做?
我的意思不是启动画面,我的意思是一个页面,它仅在您第一次启动应用程序时显示,类似于一个小教程。
典型的模板生成App.xaml.cs
在其OnLaunched
方法中具有类似以下内容:
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
这是您导航到第一页的位置。要特殊情况下首次运行,请改为执行以下操作:
if (rootFrame.Content == null)
{
IPropertySet roamingProperties = ApplicationData.Current.RoamingSettings.Values;
if (roamingProperties.ContainsKey("HasBeenHereBefore"))
{
// The normal case
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
else
{
// The first-time case
rootFrame.Navigate(typeof(GreetingsPage), e.Arguments);
roamingProperties["HasBeenHereBefore"] = bool.TrueString; // Doesn't really matter what
}
}
然后,问候语页面应导航到您的设置页面,该页面应导航到您的主页。
通过使用漫游设置,用户在登录到其他计算机时不会看到首次屏幕。
您可以在 App.xaml.cs 中设置"第一个"页面。搜索 OnLaunch 无效并将rootFrame.Navigate(typeof(MainPage));
更改为您喜欢称呼它的rootFrame.Navigate(typeof(Greeting));
或任意名称。
下一步是检查应用程序是否首次启动。您可以设置应用设置来执行此操作。 1. 为您的 Greeting.xaml 创建 OnnavigatedTo void(只需键入"受保护的覆盖无效 onna",IntelliSense 会向您建议它)并通过在"受保护"之后插入"异步"来制作异步, 2.使用此代码:
if (ApplicationData.Current.LocalSettings.Values.ContainsKey("isFirstLaunch"))
{
// if that's the first launch, stay, otherwise navigate to Settings.xaml
if (!(bool)ApplicationData.Current.LocalSettings.Values["isFirstLaunch"])
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Frame.Navigate(typeof(Settings)));
}
}
else
{
ApplicationData.Current.LocalSettings.Values["isFirstLaunch"] = false;
}
我还没有测试代码,但它应该可以工作。如果没有,请问我。
编辑:这是一个更好的解决方案:Dhttps://stackoverflow.com/a/35176403/3146261
我只是想通过消息框接受免责声明
IPropertySet roamingProperties = ApplicationData.Current.RoamingSettings.Values;
if (!roamingProperties.ContainsKey("DisclaimerAccepted"))
{
var dialog = new MessageDialog(strings.Disclaimer);
dialog.Title = "Disclaimer";
dialog.Commands.Clear();
dialog.Commands.Add(new UICommand { Label = "Accept", Id = 0 });
dialog.Commands.Add(new UICommand { Label = "Decline", Id = 1 });
var result = await dialog.ShowAsync();
if ((int)result.Id == 1)
Application.Current.Exit();
roamingProperties["DisclaimerAccepted"] = bool.TrueString;
}
我把它放在 App.xaml 中.cs里面:
if (e.PrelaunchActivated == false)
{
<Inside here>
if (rootFrame.Content == null)
{
}