3

アプリケーションに MVVM の実装を開始しましたが、ユーザーがいつビューに移動したかを知るという問題が発生しました。

ビュー間を移動するには、navigationService.Navigate(...);

ビューに移動したことを確認するにはどうすればよいですか? イベントを利用してもnavigationService.Navigatedいいですか?

ページ自体が提供する OnNavigatedTo のように使用できる方法は他にありませんか?

4

3 に答える 3

1

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;
            }
        }
于 2013-08-19T08:42:52.243 に答える
0

提供された回答に感謝します。数人によって作成されたナビゲーション サービスのカスタム実装を作成することを決定するまで、どちらもしばらくの間役に立ちました。その後、私はこれを提案するために Cimbalino ツールキットに貢献しましたが、それはしばらく前に導入されました。

私の個人的な意見ですが、それが私の問題を最もよく解決します。そこにあるナビゲーションサービスを見てください。Navigated イベントは、私が抱えていた問題をほぼ解決します。

https://github.com/Cimbalino/Cimbalino-Toolkit

それは基本的にこれに帰着します(ビューモデルで):

_navigationService.Navigated += OnNavigated;
于 2014-09-05T13:29:44.497 に答える