无法导航回Template10
问题描述:
我想从这个辅助页面导航回到我的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
,但它仍然返回异常
答
- 要在不同页面之间导航,请使用
Frame.Navigate
方法。 - 的页面导航称为网主页一个XAML页面的一个例子是:
this.Frame.Navigage(typeof(Mainpage));
欲了解更多信息请查看文档:Frame.Navigate
正在使用的命名空间被称为System.Windows.Controls
。
哪行代码引发空引用异常?导航服务是否为空? –
this.Frame.Navigage(typeof(Mainpage)); –
@GlenThomas我从'NavigationService.GoBack()' –