超载构造函数未在另一页中初始化



我正在研究一个开发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;
}

最新更新