2017-01-09 13 views
0

私はUWPプログラムを作成しており、複数のページ間で共通のプロパティ/フィールドを共有したいと考えています。親ページにモデル(または多分viewmodel)インスタンスを作成し、Frame.Navigateメソッドのパラメータとして子ページにインスタンスを渡そうとしました。しかし、C#のパラメータは値渡され、Frame.Navigateは参照や出力をサポートしていないので、実際に複数のページ間でこのインスタンスを共有することはできません。複数のページ間でプロパティを共有する/ナビゲーションで参照渡しする方法は?

私の質問は

  1. は、ページ間で値を共有するための一般的な方法これはあり、それが動作しますか?
  2. もしそうでなければ、提案されたアプローチは何ですか?
  3. もしそうなら、それはなぜ機能するのですか?
+0

Frame.Navigate(typeof演算(メインページ)、項目)、同じを取得することができますこれを使うと、パラメータをページに渡すことができます。この方法であなたが直面している問題は何ですか? –

+0

@MohanvelV私が言ったように、私はアイテムが参照渡すことができたらいいと思う。複数のページの背後にあるオブジェクトを共有する方法は可能でしょうか? –

答えて

2

複数のページ間で同じモデルの値を共有したい場合は、モデルを静的なクラスにします。彼らはそれの単一のコピーを共有するように。

+0

私はこれが可能な解決策であることを知っていますが、それはうまく構成されているのですか? –

+0

はい、そうです。静的なクラスそれは、アプリケーション全体で単一のコピーを共有する意味を持っています。また、1つのオブジェクトしか起動しないので、メモリ消費が適切に処理されます。 –

+0

しかし、ログインのベースで値の共有が異なる場合、静的クラスはオプションではありません。静的クラスはログインに関係なく同じ値を共有するためです。 –

0

値はページごとに変更された場合、あなたは、モデルのオブジェクトを渡すことができますし、次のページのOnNavigatedTo

ItemModel objEditItem; 
    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

     if (e.Parameter != null) 
     { 
      objEditItem = new ItemModel(); 
      objEditItem = e.Parameter as ItemModel; 
     } 
    } 
+0

これは明らかに複雑すぎます、そして、オブジェクトが非常に大きくなる可能性があるので、それはパフォーマンスにとって良くないと思います。 –

関連する問題