Я пытаюсь выяснить, как перемещаться по страницам оболочки из события нажатия кнопки на отдельных страницах. Я хочу, чтобы нажатие кнопки было таким же, как при открытии меню и выборе следующей страницы. Например, у меня будет ряд страниц, где я собираю информацию от пользователя для создания отчета. Я хочу, чтобы пользователь ввел некоторые данные на первой странице и щелкнул рядом с go на 2-й странице, чтобы ввести дополнительную информацию и так далее. Я хочу сохранить меню страницы оболочки так, чтобы, если пользователь решит, что ему нужно go вернуться на страницу, чтобы изменить ранее введенную информацию, он может открыть меню оболочки и выбрать страницу, а не нажимать кнопку назад. Нажмите кнопку n раз, чтобы вернуться на предыдущую страницу.
Я попытался использовать маршрутизацию и Shell.Current.GoToAsyn c () для достижения этой цели, но получил пустую ссылку в Main.cs в строке UIApplication.Main(args, null, "AppDelegate");
Я избегаю использования Navigation.PushModalAsync(new Page2());
, потому что в этом навигации образом убирает меню гамбургера с моей страницы оболочки. Я также попытался создать функцию в ShellPage.xaml.cs под названием Change_Page (), которую я вызываю нажатием кнопки на первой странице. в этой функции я попробовал тот же Shell.Current.GoToAsync("myPage2")
, который снова привел к ошибке нулевого задания, а также Shell.Current.CurrentItem = myPage2;
, который привел к разрыву в той же строке, но вставил ошибку, я получил некоторую проблему UIKit.UIApllication, которая не Кажется, он отображает ошибку, но остановил отладчик здесь.
ShellPage.xaml
...
<FlyoutItem Title="Page1">
<ShellContent>
<views:Page1View Title="Page1" x:Name="myPage1" Route="myPage1"/>
</ShellContent>
</FlyoutItem>
<FlyoutItem Title="Page2">
<ShellContent>
<views:Page2View Title="Page2" x:Name="myPage2" Route="myPage2"/>
</ShellContent>
</FlyoutItem>
<FlyoutItem Title="Page3">
<ShellContent>
<views:Page1View Title="Page1" x:Name="myPage3" Route="myPage3"/>
</ShellContent>
</FlyoutItem>
...
myShellPage.xaml.cs
[DesignTimeVisible(false)]
public partial class MyShellPage : Shell
{
public MyShellPage()
{
InitializeComponent();
Routing.RegisterRoute("myPage1", typeof(CallInfoPage));
Routing.RegisterRoute("myPage2", typeof(SpillInfoPage));
Routing.RegisterRoute("myPage3", typeof(ItemsPage));
Device.StartTimer(TimeSpan.FromSeconds(3), () =>
{
// Do something
Current.CurrentItem = myPage3; // throws error 'myPage3' does not exist in current context
return false; // True = Repeat again, False = Stop the timer
});
}
}
Page1View.xaml
...
<Button Text="Next" Clicked="Next_Clicked" />
...
Page1View.xaml.cs
...
async void Next_Clicked(System.Object sender, System.EventArgs e)
{
await Shell.Current.GoToAsync("myPage2");
}
...