2017-09-26 2 views
0

メインページのthis.Frame.Navigate(typeof(RegionPage));の指示が機能しません。初めてアプリケーションを開くとページを変更できない

System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。'

私はメインページの後にいくつかの機能を入れてみましたが、すべてうまくいっています。

私の目標:ユーザーが初めてアプリケーションを開いた場合、チュートリアルで新しいページが表示されるようにしたいと考えています。

質問:どうすれば問題を回避できますか?ためのアプリへ

public MainPage() 
{ 
    this.InitializeComponent(); 

    Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested; 
    this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled; 

    TextBoxRicerca.Visibility = Visibility.Collapsed; 
    Mappe.Loaded += Mappe_Loaded; 

    Regione.RegNome = ""; 

    this.Frame.Navigate(typeof(RegionPage));     
} 
+0

例外は何ですか? –

答えて

0

私は遅延を使いたくないし、OnLaunchedイベントでApp.xaml.csを編集するのが難しかったです。 私はミックスを作って、 "Loaded + = Loading;"

private void Loading(object sender, RoutedEventArgs e) 
     { 
      this.Frame.Navigate(typeof(RegionPage)); 
     } 

それだけで私が追加する必要がありますメッセージを与えるの「新しい」どこか知っていて、ドンはありません」..メインと作成した上で

public MainPage() 
{ 
    this.InitializeComponent(); 

    Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested; 
    this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled; 

    TextBoxRicerca.Visibility = Visibility.Collapsed; 
    Mappe.Loaded += Mappe_Loaded; 

    Regione.RegNome = ""; 

    **Loaded += Loading;** 

    //this.Frame.Navigate(typeof(RegionPage));     
} 

機能を..created tはなぜ知っているが、動作します "Avviso CS0108 'MainPage.Loading(オブジェクト、RoutedEventArgs)' nasconde IL membro ereditato 'FrameworkElement.Loading' Seのquesto comportamentoèintenzionale、usareラparola chiave新しい。" D

+0

'Page'クラスは既に' Loading'という名前のメンバ( 'FrameworkElement'クラスで定義されたイベント)を持っているので、メソッドのシグネチャに' new'キーワードを追加するよう要求します。メソッドは同じ識別子。 たとえば、 'Page_Loading'と呼ばれる' Loading'メソッドをリファクタリングすると、エラーは消えます。 –

0

はそうあなたがコンポーネントをロードするためにあなたのアプリケーションにいくつかの時間を与える必要がありを起動するためのいくつかのコンポーネントを準備しています。

だからあなたはあなたがそれに応じて遅延時間を調整することができますthis--

using System.Threading.Tasks; 


public MainPage() 
{ 
    this.InitializeComponent(); 
    Loaded += async (s, e) => 
    { 
     await Task.Delay(100); 
     Frame.Navigate(typeof(RegionPage)); 
    }; 
} 

のようないくつかの遅延を与える必要があります。

Demo-

Demo

代替Way-

そして、それはいくつかの特定のページやチュートリアルページを表示する必要がありますので、あなたの、あなたのアプリケーションを編集することができますの初めての打ち上げのための完全なソリューション.xaml.cs in OnLaunchedイベント

using Windows.Storage; 


if (e.PrelaunchActivated == false) 
{ 
    if (rootFrame.Content == null) 
    { 
     IPropertySet roamingProperties = ApplicationData.Current.RoamingSettings.Values; 
     if (roamingProperties.ContainsKey("FirstTimePage")) 
     { 
      // regular visit 
      rootFrame.Navigate(typeof(MainPage), e.Arguments); 
     } 
     else 
     { 
      // first time visit 
      rootFrame.Navigate(typeof(RegionPage), e.Arguments); 
      roamingProperties["FirstTimePage"] = bool.TrueString;  
     } 
    } 
    // Ensure the current window is active 
    Window.Current.Activate(); 
} 
関連する問題