public override void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState) {
     int id = (int)e.Parameter;
     if (id == 0) {
         SelectedPlanetVM = new PlanetViewModel();
         SelectedPlanetVM.Id = id;
     }
     base.OnNavigatedTo(e, viewModelState);
 }
        // Add AppBarButton
        private void AddPlanet() {
            SelectedPlanetVM = new PlanetViewModel();
            navigationService.Navigate("LifecycleAdd", SelectedPlanetVM.Id);

            //navigationService.Navigate("LifecycleAdd", SelectedPlanetVM);
            // 1/8/2016 - Even though I have 'SessionStateService.RegisterKnownType(typeof(PlanetViewModel));'
            // in App.xaml.cs, when SelectedPlanetVM is passed in .Navigate I get this error:
            // Exception: "Session state service failed"
            // InnerExecption: "Unspecified error\r\n\r\nGetNavigationState doesn't support serialization of a parameter type
            //                  which was passed to Frame.Navigate."
            // 1/12/2016 - Here is a good discussion of the problem: // https://social.msdn.microsoft.com/Forums/en-US/ad753362-0d52-42b3-8917-b2897033ba49/getnavigationstate-doesnt-support-serialization-of-a-parameter-type-which-was-passed-to?forum=winappswithcsharp
            // Another: http://stackoverflow.com/questions/23896488/getnavigationstate-doesnt-support-serialization-of-a-parameter-type-which-was-p
            // Another: http://www.damirscorner.com/blog/posts/20120923-UsingSuspensionManagerForSavingApplicationState.html
            // Bottom Line: Pass the Id; if Id == 0, create a new PlanetViewModel; if Id != 0, GetPlanet(id) and map to PlanetViewModel.
        }
 // PlanetVM -> Planet Mapper
 // TODO: use AutoMapper instead https://github.com/AutoMapper/AutoMapper/wiki
 private Planet MapPlanetVMToPlanet(PlanetViewModel planetVM) {
     return new Planet {
         Id = planetVM.Id,
         Name = planetVM.Name,
         ImagePath = planetVM.ImagePath,
         Mass = planetVM.Mass,
         Diameter = planetVM.Diameter,
         Gravity = planetVM.Gravity,
         LengthOfDay = planetVM.LengthOfDay,
         DistanceFromSun = planetVM.DistanceFromSun,
         OrbitalPeriod = planetVM.OrbitalPeriod,
         MeanTemperature = planetVM.MeanTemperature,
         NumberOfMoons = planetVM.NumberOfMoons
     };
 }
 // Add AppBarButton
 private void AddPlanet() {
     SelectedPlanetVM = new PlanetViewModel();
     navigationService.Navigate("PlanetAdd", SelectedPlanetVM);
 }
 // Add AppBarButton
 private void AddPlanet() {
     if (SelectedPlanetVM != null) {
         saveSelectedPlanetId = SelectedPlanetVM.Id;
     }
     SelectedPlanetVM = new PlanetViewModel();
     IsInEditMode = true;
     RunAllCanExecuteChanged();
 }