2015-03-18 3 views
0

В моем приложении Windows Phone 8.1 с использованием шаблона MVVM я хочу сделать навигацию по страницам. Я написал для этого код. И передовая навигация по страницам работает отлично!Обратная связь не работает в Windows Phone 8.1 Приложение

Но проблема, с которой я столкнулась, заключается в том, что при нажатии на кнопку нажмите на странице, приложение уходит.

Что я думаю, проблема в том, что я создаю новый объект _frame каждый раз во время навигации по странице, поэтому из-за этого объект _frame не сохраняет историю навигации. _frame.CanGoBack дает false даже после некоторых раундов навигации (Это должно быть true).

Так что же мне здесь не хватает? Как сохранить историю навигации? Что-то не так с моим подходом? Буду признателен за любую помощь.

Коды следующим образом:

NavigationService Класс:

public class NavigationService : INavigationService 
{ 
    private readonly Frame _frame; 

    public NavigationService() 
    { 
     _frame = new Frame(); 
    } 

    public void NavigateTo(Type source) 
    { 
     Window.Current.Content = _frame; 
     _frame.Navigate(source); 
    } 

    public void GoBack(object sender, BackPressedEventArgs e) 
    { 
     Window.Current.Content = _frame; 
     if (_frame.CanGoBack) 
     { 
      _frame.GoBack(); 
      e.Handled = true; 
     } 
    } 
} 

Мой XAML код позади:

public INavigationService NavigationService; 
public EmployeeProfilePage() 
{ 
    this.InitializeComponent(); 
    HardwareButtons.BackPressed += HardwareButtons_BackPressed; 
    ... 
} 
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
{ 
    NavigationService = new NavigationService(); 
    NavigationService.GoBack(this, e); 
} 

ответ

1

Создание нового экземпляра Кадр неправильно, просто используйте один кадр, созданный в App.xaml.cs

Просто положил _frame = Window.Current.Content в кадре конструктору и не использовать новую раму()

0

Вы должны вызвать GoBack на текущем кадре, который можно получить доступ с помощью Frame свойства Page объекта. У вас также должно быть только одно Frame для вашего приложения, которое создается при запуске приложения.

... 
    HardwareButtons.BackPressed += HardwareButtons_BackPressed; 
} 

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
{ 
    this.Frame.GoBack(); 
} 
+0

Можете ли вы дать образец кода? –

Смежные вопросы