У меня есть две страницы с похожей логикой. Загрузите страницу, нажмите несколько кнопок, чтобы показать/скрыть другие кнопки, перейдите на следующую страницу. Когда я попадаю на следующую страницу, если я нажимаю кнопку «Назад», я возвращаюсь на предыдущую страницу.
Разница в том, что на одной странице (FirstPage) будет вызываться конструктор, когда я нажимаю кнопку «Назад», у которой есть вызов для сброса значений по умолчанию. На другой странице (SecondPage) конструктор не вызывается, и я не знаю, почему.
public FirstPage()
{
InitializeComponent();
DisplayStuff();
}
FirstPage имеет KeepAlive
значение False
.
public SecondPage(object arg1, object arg2)
{
InitializeComponent();
DisplayStuff(arg1, arg2);
}
На этой странице также KeepAlive
установлено на False
. Эти две страницы ни от чего не наследуются, и нет ничего, что переопределяло бы какие-либо свойства. Единственная разница, которую я вижу, это пустой конструктор, поэтому я попытался дать SecondPage пустой конструктор, и все равно не повезло.
Я относительно новичок в WPF (я работаю над ним час или два каждые 6 месяцев), так что же мне не хватает?
Вот кнопка «Назад», если это актуально.
<Button Command="{x:Static NavigationCommands.BrowseBack}" />
Изменить: когда я нажимаю кнопку «Назад», SecondPage не сохраняет свое состояние. Он просто загружает пустую страницу, потому что DisplayStuff
еще не вызывалась.
Код навигации:
NavigateTo(new SecondPage(arg1, arg2));
protected void NavigateTo(Page page)
{
NavigationService.Navigate(page);
}