2017-06-29 9 views
0

WPF PRISMアプリケーションで2つのビュー間でナビゲーションパラメータを渡すことに苦労しています。プリズムMVVM INavigationAwareイベントプリズムが発射されない

私のアプリケーションの基本的な構造は以下の通りです: 私はviewmodelsフォルダを持っています。アプリケーションのすべての "セクション"のためのフォルダを持っています。注文、プロジェクト

同じことがビューに適用されます。

私はordersフォルダのビューからProjectsフォルダのビューにナビゲートしています。

実際のナビゲーションが動作していて、アプリケーションが2番目のviewmodelのコンストラクタでブレークポイントにヒットしましたが、INavigationAwareインターフェイスメソッドは呼び出されません。

これは、フォルダのために異なる名前空間に存在するviews/viewmodelsと関係があるかどうかわかりません。ここで

は、私が使用する重要なコードスニペットです:

ブートストラップ

Container.RegisterType(typeof(Object), typeof(ConfirmOrders), "Orders.ConfirmOrders"); 
Container.RegisterType(typeof(Object), typeof(QuotedCosts), "Projects.QuotedCosts"); 

ナビゲーションQuotedCostsにConfirmOrdersから

NavigationParameters par = new NavigationParameters(); 
par.Add("ProjectID", ProjID); 
_regionManager.RequestNavigate("ContentRegion", "Projects.QuotedCosts", par); 

QuotedCostsは呼び出されません飽きない玉葉ナビゲーションイベントをViewModelに

public class QuotedCostsViewModel : ViewModelBase, INavigationAware 
    { 
     private IProjectService _projectService; 

     private int ProjectID { get; set; } 
     public mProject CurrProject { get; protected set; } 

     public QuotedCostsViewModel(IProjectService projectService) 
     { 
      _projectService = projectService; 
      CurrProject = _projectService.GetProjectDetails(ProjectID); 
     } 

     public void OnNavigatedTo(NavigationContext navigationContext) 
     { 
      ProjectID = int.Parse(navigationContext.Parameters["ProjectID"].ToString()); 
     } 

     public bool IsNavigationTarget(NavigationContext navigationContext) 
     { 
      return true; 
     } 

     public void OnNavigatedFrom(NavigationContext navigationContext) 
     { 

     } 

    } 
+0

あなたはパラメータを送信しているところからのコードを投稿してくださいでしたあなたが使用しているウリクエリ.. – stylishCoder

+0

、すなわちそれは、2番目のコードブロックであります私はUriクエリを使用せず、むしろナビゲーションパラメータのオーバーロードを使用しています – ThatChris

+0

コードはよく見えます@ThatChrisは名前空間を置き換えることによって識別する必要があります..それ以外のヒットと試用版の問題 – stylishCoder

答えて

0

だから、僕は問題がのviewmodelの異なるメソッドが呼び出されていたことを順序の私の誤解によるものであったことに気づきました。

私は、イベントの前にコンストラクタが呼び出されたことを認識せずに、コンストラクタで使用されるNavigatedToメソッドのパラメータを設定していました。 OnNavigatedToコンストラクタのうち、とに問題のあるコードを移動

問題に解決している

+0

あなたの回答(コード)もここで更新してください – stylishCoder

関連する問題