如何在 C# 中设置“首次启动视图”

本文关键字:启动 视图 设置 | 更新日期: 2023-09-27 18:32:57

>我到处搜索,但我找不到针对我问题的教程。我想设置一个页面,以便在首次启动应用程序时显示。像这样:

首次发布:Greeting.xaml>Setting.xaml>MainPage.xaml

常规启动直接进入主页。

我该怎么做?

的意思不是启动画面,我的意思是一个页面,它仅在您第一次启动应用程序时显示,类似于一个小教程。

如何在 C# 中设置“首次启动视图”

典型的模板生成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)
            {
            }