アプリケーションに MVVM の実装を開始しましたが、ユーザーがいつビューに移動したかを知るという問題が発生しました。
ビュー間を移動するには、navigationService.Navigate(...);
ビューに移動したことを確認するにはどうすればよいですか? イベントを利用してもnavigationService.Navigated
いいですか?
ページ自体が提供する OnNavigatedTo のように使用できる方法は他にありませんか?
アプリケーションに MVVM の実装を開始しましたが、ユーザーがいつビューに移動したかを知るという問題が発生しました。
ビュー間を移動するには、navigationService.Navigate(...);
ビューに移動したことを確認するにはどうすればよいですか? イベントを利用してもnavigationService.Navigated
いいですか?
ページ自体が提供する OnNavigatedTo のように使用できる方法は他にありませんか?
XAML:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP71"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
DataContext="{Binding titleSearchViewModel, Source={StaticResource Locator}}">
<i:Interaction.Triggers>
<i:EventTrigger>
<cmd:EventToCommand Command="{Binding PageLoaded, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
仮想マシン:
private RelayCommand _PageLoaded;
public RelayCommand PageLoaded
{
get
{
if (_PageLoaded == null)
{
_PageLoaded = new RelayCommand(
() => Loaded()
);
}
return _PageLoaded;
}
}
提供された回答に感謝します。数人によって作成されたナビゲーション サービスのカスタム実装を作成することを決定するまで、どちらもしばらくの間役に立ちました。その後、私はこれを提案するために Cimbalino ツールキットに貢献しましたが、それはしばらく前に導入されました。
私の個人的な意見ですが、それが私の問題を最もよく解決します。そこにあるナビゲーションサービスを見てください。Navigated イベントは、私が抱えていた問題をほぼ解決します。
https://github.com/Cimbalino/Cimbalino-Toolkit
それは基本的にこれに帰着します(ビューモデルで):
_navigationService.Navigated += OnNavigated;