2015-01-16 2 views
-1

Я создаю приложение XAML для метро «Победа 8» и столкнулся с «проблемой».Как я могу ждать выполнения initializecomponent

У меня есть главная страница.xaml с кнопкой и в mainpage.xaml.cs у меня есть свой конструктор с initializecomponent(). когда я нажимаю кнопку, я вызываю этот метод:

private void GoToOtherPage() 
{ 
    this.Frame.Navigate(typeof(MySecondPage)); 
} 

и работает просто отлично. Однако в contructor у меня также есть условие, и если true, просто продолжайте, но если это ложь, я хочу запустить GoToOtherPage(). конструктор тогда выглядит somtehing как этот

Public Mainpage() 
{ 
    InitializeComponent(); 
    if(....) 
    { 
     //do some stuff 
    } 
    else 
    { 
     GoToOtherPage(); 
    } 
} 

Поскольку InitializeComponent() не готов, когда это произойдет, я получаю ошибку Object reference not set to an instance of an object. которой я (думаю) нашли это refferring в this.Frame.

Как я должен сделать это правильно? Поместите что-то наподобие «WaitForThisFormToBeReady()» перед .Navigate или я нахожусь на полном неверном треке здесь?

ответ

0

Я думаю, что this.Frame становится ненулевым после того, как страница была перенесена, чтобы вы могли переопределить OnNavigatedTo, чтобы справиться с этим. В противном случае вы можете захватить Frame через (Frame)Window.Current.Content, недвижимость на вашем App или NavigationService - в зависимости от того, насколько вы прошли дизайн с вашим рисунком.

+0

Я попробовал переопределение, и он не дал мне никаких ошибок, и он запускает код, но не переключает страницу. Я также попробовал this.content = new otherpage(); whick работает, но затем сбой Frame.GoBack() в другой странице. :) – gubbfett

+0

Я думаю, что вы не можете перемещаться внутри другого навигационного вызова ... :) Возможно, вам потребуется запустить его с помощью 'Dispatcher.RunAsync()', чтобы немного задержать его. –

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