2016-10-24 2 views
0

私は、MainPageを含む複数のページで再利用されるユーザーコントロールを持っています。私はユーザーコントロールのいくつかのロジックを実行したいと思いますの場合、ユーザーコントロールのインスタンスの現在のページでイベントが発生します。ロジックはページの内容にかかわらず同じなので、ユーザーコントロールが親ページからデリゲートを呼び出さないようにしたいと思います。アプリケーションの現在のページタイプはユーザーコントロールのこのインスタンスがの子であることをページに等しい場合、私はチェックしてるif声明でUWPユーザーコントロールからコードビハインドからページタイプを取得

//Event method in the user control: 
    private void Dummy_Event(object sender, DummyEventArgs e) 
    { 
     // Handle global application events only if this page is active 
     if (((Frame)Window.Current.Content).CurrentSourcePageType == typeof(/* PAGE TYPE */)) 
     { 
      //DO STUFF 
     } 
    } 

私はthis.Parentの繰り返し呼び出しを行うことができますが、最終的にPage要素に到達しても、私が知る限りどのページにあるかを示す方法はありません。

誰にもアイデアはありますか?

+1

booleanプロパティをusercontrolに追加し、この追加ロジックを実行する親ページのxamlでtrueに設定できますか? –

+0

Sry、私はあなたが求めたものを手に入れませんでした。あなたはすでに 'CurrentSourcePageType'でページタイプを取得しています。それではほかに何が欲しいですか? –

+0

@ ElvisXia-MSFT 'CurrentSourcePageType'は現在のページですが、すべてのページがキャッシュされていて、コードが実行されないようにするために、ユーザーコントロールのインスタンスが属するページと比較する必要があります特定のページがアクティブなページではありません。 – ohgross

答えて

1

UserControl自身の責任で、現在のPageFrameであるかどうかを判断するには、少し面倒です。私はMarkの提案に従い、UserControl内でそのイベントを処理する必要があるかどうかを判断するために使用できるBooleanプロパティ(おそらくIsActive)を公開します。今度はPageのそれぞれの責任において、このフラグをOnNavigatedToの中に設定し、OnNavigatedFromの内部でクリアするようにします。

関連する問題