簡體   English   中英

無法在Template10中導航

[英]Cannot navigate back in Template10

我正在嘗試從此輔助頁面導航回我的MainPage。 我嘗試使用NavigationService.GoBack()但得到了NullReferenceException

我沒有從視圖模型中進行任何更改。 我打算做的是先將用戶輸入保存到SQLite,然后導航回MainPage

這是我來自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 ,但它仍返回異常

  • 要在不同的頁面之間導航,請使用Frame.Navigate方法。
  • 頁面導航到名為Mainpage的xaml頁面的示例是: this.Frame.Navigage(typeof(Mainpage));

有關更多信息,請參見文檔: Frame.Navigate

使用的命名空間稱為System.Windows.Controls

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM