App.Current.MainPage NullReferenceException в конструкторе MainPageModel - PullRequest
0 голосов
/ 12 ноября 2018

При загрузке MainPage я нажимаю другую страницу из Конструктора MainPageModel. Бросает NullReferenceException в MainPageModel. Это мой код

MainPage конструктор

public MainPage()
{
    InitializeComponent();
    Title = "MainPage";
    BindingContext = new MainPageViewModel(); 
}

MainPageModel конструктор

public MainPageViewModel()
{
    App.Current.MainPage.Navigation.PushAsync(new HomePage()); //Exception
    //CommandMenu1 = new Command(async () => await NavigateNext());
}

Как я могу решить эту проблему?

Ответы [ 4 ]

0 голосов
/ 10 августа 2019

Вы можете попробовать код ниже:

await Navigation.PushAsync(new NewPage());

на новой странице. Cs

InitializeComponent();
NavigationPage.SetHasBackButton(this, false);
0 голосов
/ 16 февраля 2019

Вы пытаетесь получить доступ к MainPage в вашей модели представления, прежде чем она будет полностью инициализирована. Вместо связывания в конструкторе MainPage связывайте в App.xaml.cs

public App() {
   InitializeComponent();

   MainPage = new MainPage();
   MainPage.BindingContext = new MainPageViewModel();

}
0 голосов
/ 20 июня 2019

Используйте OnAppearing() вместо MainPageViewModel(), чтобы дать ему время для полной загрузки, Код:

 protected override async void OnAppearing()
    {
        App.Current.MainPage.Navigation.PushAsync(new HomePage());
    }

Надеюсь, это поможет!

0 голосов
/ 12 ноября 2018

Вероятно, произойдет следующее:

public class App
{
    MainPage = new MainPage();
}

Конструктор MainPage() необходимо завершить, прежде чем он будет назначен свойству MainPage вашего App.Поэтому, пытаясь получить доступ к App.Current.MainPage до этого, вы получите NullReferenceException.Это означает, что вам придется найти другой способ достичь того, что вы пытаетесь сделать здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...