Zadałem to pytanie w podobnym poście, ale od tego czasu nastąpiły znaczące aktualizacje, ale nadal nie ma wyników, więc postaram się ponownie zadać pytanie z aktualnymi informacjami.Przycisk Start i Wstecz wciśnięty w krótkim odstępie czasu WP7
Zasadniczo mam widok przestawny z 4 elementami obrotu. Jeśli utworzę scenariusz, w którym uderzyłem w klawisz Windows, a następnie szybko naciśnij klawisz powrotu, moja aplikacja zostanie ponownie otwarta bez rekonstrukcji (jest to oczekiwany wynik). Funkcjonalność aplikacji już istnieje. Mogę naciskać przyciski paska aplikacji itp.
Co nie działa, to elementy przestawne są zamrożone. Jeśli znajdowałem się na pozycji Pivot A i szybko naciskałem przycisk Start i Wstecz, wracam do pozycji Pivot A. Jeśli spróbuję zmienić elementy Pivot, ekran się nie zaktualizuje, jest "zamrożony" na pozycji Pivot A ALE funkcjonalność Pivot Item B tam jest. (Wiem o tym, ponieważ teraz wyświetlane są ikony paska narzędzi dla elementu przestawnego B).
Przeczytałem wiele artykułów na temat prawidłowych scenariuszy z tombstoning i jak podejść do tego problemu. Moje dane są prawidłowo nagrywane, a po ponownej aktywacji działają dane z nagrobkiem. Żadne obiekty nie są puste, więc nie mam żadnych wyjątków.
Sprawdzam, czy muszę przeładować Main ViewModel (nie muszę w tym przypadku, aby początkowo tworzone elementy interfejsu użytkownika nie były ponownie tworzone).
Rozwiązanie problemu polega jednak na rekonstrukcji aplikacji. Powiedzmy, że wchodzę na rynek z mojej aplikacji, pozwól mu zakończyć ładowanie i naciśnij wstecz, Moja aplikacja zostanie odświeżona i działa poprawnie, ponieważ poprawnie dezaktywuje i rekonstruuje istelf. Nie polegam na konstruktorach wykonujących całą pracę, więc nie brakuje mi żadnych kluczowych elementów, które nie są ustawione, gdy nie są uruchamiane w scenariuszu windows/back button.
Czy ktoś ma pojęcie, dlaczego mój ekran nie aktualizuje się?
konstruktor/event ładowany/na przejściu do imprezy
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (App.firstTimeLoading == true)
{
App.firstTimeLoading = false;
}
BuildApplicationBar();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.DataContext = App.ViewModel;
App.viewIdentifier = StringResource.MainPageView;
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
String bookTitle;
App.Parser.appBookInfoDict.TryGetValue(CPlayerInventoryKeys.kInventoryKeyTitleShortTitle, out bookTitle);
PivotBackground.Title = bookTitle.ToUpper();
CreatePivotItems();
}
if (App.playerController.chapterPlayer.Source == null)
App.restoreStateClass.RestoreState();
//applies the proper background image
if (App.isDarkTheme)
{
BitmapImage bitmapImage = new BitmapImage(new Uri(StringResource.PanoramaBlackImage, UriKind.Relative));
BackgroundImage.ImageSource = bitmapImage;
BackgroundImage.Opacity = .85;
}
else
{
BitmapImage bitmapImage = new BitmapImage(new Uri(StringResource.PanoramaWhiteImage, UriKind.Relative));
BackgroundImage.ImageSource = bitmapImage;
BackgroundImage.Opacity = .5;
}
if (App.firstTimeLoading == false && PivotBackground.SelectedItem != SuggestedPivotItem)
BuildApplicationBar();
else if (PivotBackground.SelectedItem == SuggestedPivotItem)
{
BuildMarketPlaceApplicationBar();
}
base.OnNavigatedTo(e);
}
Masz pełną repro, którą możesz udostępnić? –
Zostałem zaktualizowany za pomocą jakiegoś kodu relavent, wciąż krok po kroku debugowania tego chociaż –