MainPageとDetailPageがあります。どちらも静的クラスを使用してデータを受信します。DataServiceと呼ばれるこのクラスは、INotifyPropertyChangedインターフェイスを実装し、「IsLoading」と呼ばれるプロパティを実装します。DataService内のメソッドが呼び出されるたびに、IsLoadingをtrueに設定します。DataService自体は、DataServiceをインスタンス化するGlobalsと呼ばれる静的クラスに含まれています(これをシングルトンパターンで実装します)
メインページでは、ポップアップが表示されます。
<Page.Resources>
<Common:DataService x:Key="DataService" />
</Page.Resources>
<Popup IsOpen="{Binding IsLoading}" DataContext="{StaticResource DataService}">...</PopUp>
MainPageでは、すべてが正常に機能します。DataServiceがWebサービスに何かを要求すると、ポップアップが表示されます。完了すると、ポップアップが非表示になります。
で変更しFrame.Navigate(typeof(DetailPage));
、DetailPageがデータサービスのいくつかのメソッドを呼び出し始めると、ポップアップも表示されますが、メインページと同じページには表示されません。左上隅に表示されます。
それについての面白い部分は次のとおりです。MainPageに戻ってデータをロードすると、2つのポップアップが表示されます。もう一度DetailPageに移動すると、3番目のポップアップが表示されます。このポップアップがインスタンス化されているようです。
次のポイント:ポップアップのDataContextを設定し、でDataContextをOnNavigatingTo
削除するOnNavigatingFrom
と、必要なポップアップが表示されたままになり、2番目のポップアップがインスタンス化されません。
ここで何が問題になりますか?