2016-04-15 80 views
0

我想從這個輔助頁面導航回到我的MainPage。我試圖使用NavigationService.GoBack(),但我得到了NullReferenceException無法導航回Template10

我沒有改變viewmodel中的任何東西。我打算做的是先保存用戶輸入的SQLite,然後再返回炫魅廣東

這裏是我的代碼DetailPage.xaml.cs

private SQLiteService database = new SQLiteService(); 
    DetailPageViewModel vm = new DetailPageViewModel(); 

    public DetailPage() 
    { 
     InitializeComponent(); 
     NavigationCacheMode = NavigationCacheMode.Disabled; 
    } 

    private void yesButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
    {    
     var _name = Name.Text; 
     var _uptake = UptakeTime.SelectedIndex + 1; // database index Morning start at 1 
     var _intake = int.Parse(Intake.Text); 

     vm.ProcessData(_name, _intake, _uptake); 
    } 

這裏是DetailPageViewModel.cs

SQLiteService database = new SQLiteService(); 

    public DetailPageViewModel() 
    { 
     if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) 
     { 
      Value = "Designtime value"; 
     } 
    } 

    private string _Value = "Default"; 
    public string Value { get { return _Value; } set { Set(ref _Value, value); } } 

    public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state) 
    { 
     Value = (state.ContainsKey(nameof(Value))) ? state[nameof(Value)]?.ToString() : parameter?.ToString(); 
     await Task.CompletedTask; 
    } 

    public override async Task OnNavigatedFromAsync(IDictionary<string, object> pageState, bool suspending) 
    { 
     if (suspending) 
     { 
      pageState[nameof(Value)] = Value; 
     } 
     await Task.CompletedTask; 
    } 

    public override async Task OnNavigatingFromAsync(NavigatingEventArgs args) 
    { 
     args.Cancel = false; 
     await Task.CompletedTask; 
    } 

    public void GotoMainPage() => 
     NavigationService.GoBack();  

    public void ProcessData(string _name, int _type, int _uptake) 
    { 
     database.AddNewItem(_name, _uptake, _type); 
     GotoMainPage(); 
    } 

附註:我試圖使用vm.GotoMainPage()Detail.xaml.cs訪問GotoMainPage,但它仍然返回異常

+0

哪行代碼引發空引用異常?導航服務是否爲空? –

+0

this.Frame.Navigage(typeof(Mainpage)); –

+0

@GlenThomas我從'NavigationService.GoBack()' –

回答

0
  • 要在不同頁面之間導航,請使用Frame.Navigate方法。
  • 的頁面導航稱爲網主頁一個XAML頁面的一個例子是: this.Frame.Navigage(typeof(Mainpage));

欲瞭解更多信息請查看文檔:Frame.Navigate

正在使用的命名空間被稱爲System.Windows.Controls