2017-02-22 13 views
0

私は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)); 
    } 

と第2フレームのためのコード:

public Reservation(string pickup, string _return) 
    { 
     InitializeComponent(); 
     PickupDateDisplay.Text = pickup; 
     ReturnDateDisplay.Text = _return; 
    } 

UPDATE:

[OK]をので、私は(予約をオーバーロード) 2番目のフレームのコードは次のようになります:

public Reservation() 
    { 
     InitializeComponent(); 
    } 

    public Reservation(string pickupdate,string retdate) 
    { 
     InitializeComponent(); 
     PickupDateDisplay.Text = pickupdate; 
     ReturnDateDisplay.Text = retdate; 
    } 

ナビゲーションに使用されてFrame.Navigate方法は、与えられたのパラメータ以下のコンストラクタを使用しているため、今これが起こっている私は、実行時にすべてのエラーを得ることはありませんが、PickupDateDisplay.TextとReturnDateDisplay.Textが

+1

あなたがしようとしたものを、答えを読んで、それが言う何を、あなたが解決できない場合は、戻ってくる[編集]、あなたが見つけたもので詳細を追加、 そして何が起こった。 – Will

+0

これは、 'Frame.Navigate'メソッドを使用してナビゲートするときに、指定されたページのパラメータの少ないコンストラクタを使用しているために起こります。ナビゲートするときにパラメータをページに渡すには、[this](https://social.msdn.microsoft.com/Forums/en-US/8cb42356-82bc-4d77-9bbc-ae186990cfd5/passing-parameters-during-navigation-in)を使用します。 -windows-8?forum = winappswithcsharp)... –

+0

私はUWP for Windows 10で作業しています。あなたが提案した解決策は、Windows 8のアプリケーション用です。 @MarianDolinský – Jestin

答えて

0

は変更されません。ページ。ターゲットページにパラメータを渡すには、メソッドのオーバーロードをthisにする必要があります。

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; 
} 
+1

ありがとうございました。出来た – Jestin

関連する問題