2016-02-03 56 views
4

我到處搜索,但找不到我的問題的教程。我想設置一個頁面顯示,當應用程序第一次啓動。像日:如何在C#中設置「First-Launch-View」#

首先推出: Greeting.xaml> Setting.xaml> MainPage.xaml中

定期推出直接進入炫魅廣東。

我該怎麼做?

我並不是指一個Splashscreen,我的意思是一個頁面,只顯示第一次啓動應用程序,就像一個小教程。

+0

是啊歡迎來到應用程序新用戶...方便的提示等 – Ggalla1779

回答

3

您可以在App.xaml.cs中設置「第一個」頁面。搜索OnLaunched void並將rootFrame.Navigate(typeof(MainPage));更改爲rootFrame.Navigate(typeof(Greeting));,或者將其更改爲您喜歡的名稱。

下一步是檢查應用程序是否第一次啓動。你可以設置一個應用程序設置來做到這一點。 1.爲您的Greeting.xaml創建OnnavigatedTo void(只需鍵入「protected override void onna」,IntelliSense會向您建議),並通過在「protected」之後插入「async」使得異步同步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; 
} 

我沒有測試代碼,但它應該工作。如果沒有,請問我。

編輯:這裏有一個更好的解決方案:d https://stackoverflow.com/a/35176403/3146261

+0

嘿。謝謝! –

+0

是的,這應該起作用。但請注意,在UI線程上調用了「Page.OnNavigatedTo」,因此調度程序不是必需的。 –

+0

謝謝!我回家時試試。 :) – Flauschcoder

5

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

的問候頁應瀏覽到您的設置頁面,這應該導航到你的主頁。

並且通過使用漫遊設置,用戶在登錄到其他機器時不會看到第一次屏幕。

0

我只是想一個聲明通過一個MessageBox

  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) 
      { 
      }