我正在研究一个开发UWP应用程序的项目。
单击打算导航到另一帧的按钮时,我会遇到上述错误。
这是第一帧的代码:
private void Search_Click(object sender, RoutedEventArgs e)
{
Submit();
}
void Submit()
{
DateTime? pickupdate;
pickupdate = PickupDate.Date.DateTime;
DateTime? retdate;
retdate = ReturnDate.Date.DateTime;
Reservation res = new Reservation(pickupdate.Value.ToString("dd-MM-yyyy"), retdate.Value.ToString("dd-MM-yyyy"));
Frame.Navigate(typeof(Reservation));
}
和第二帧的代码:
public Reservation(string pickup, string _return)
{
InitializeComponent();
PickupDateDisplay.Text = pickup;
ReturnDateDisplay.Text = _return;
}
更新:
好,所以我超载了保留()构造函数,现在第二帧的代码如下:
public Reservation()
{
InitializeComponent();
}
public Reservation(string pickupdate,string retdate)
{
InitializeComponent();
PickupDateDisplay.Text = pickupdate;
ReturnDateDisplay.Text = retdate;
}
现在,我在运行时没有任何错误,但是pickupdatedisplay.text和returndatedisplay.text不会更改
这正在发生,因为用于导航的Frame.Navigate
方法使用给定页面的参数较小的构造函数。要将参数传递到目标页面,您应该使用该方法的超载。
void Submit()
{
DateTime? pickupdate = PickupDate.Date.DateTime;
DateTime? retdate = ReturnDate.Date.DateTime;
// This is useless, this instance is not used anywhere (Frame.Navigate creates its own new instance)
// Reservation res = new Reservation(pickupdate.Value.ToString("dd-MM-yyyy"), retdate.Value.ToString("dd-MM-yyyy"));
string[] parameters = { pickupdate.Value.ToString("dd-MM-yyyy"), retdate.Value.ToString("dd-MM-yyyy") };
Frame.Navigate(typeof(Reservation), parameters);
}
预订页:
string[] parameters;
public Reservation()
{
Loaded += (sender, e) =>
{
PickupDateDisplay.Text = parameters[0];
ReturnDateDisplay.Text = parameters[1];
}
InitializeComponent();
}
// This ctor is useless too
// public Reservation(string pickupdate,string retdate)
// {
// InitializeComponent();
// PickupDateDisplay.Text = pickupdate;
// ReturnDateDisplay.Text = retdate;
// }
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
parameters = (string[])e.Parameter;
}