2014-10-31 2 views
0

Я разрабатываю приложение для Windows Phone, и мне нужно перенаправить пользователя на другую страницу, если условие ложно. Поэтому без использования кнопки.Как перейти на другую страницу, не используя кнопку?

Я пытаюсь использовать "нормальный" код так:

public MainPage() 
    { 
     InitializeComponent(); 

if (iso.Contains("isoServer") == false) 
     { 
      iso["isoServer"] = "http://domain.com/appTerminalBD"; 
      NavigationService.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
     } 
    } 

Но вернуть эту ошибку:

Object reference not set to an instance of an object.

+0

Какая линия это бросает исключение на? Одна из ваших переменных: null –

+0

Эта строка: 'NavigationService.Navigate (новый Uri ("/tuto.xaml ", UriKind.RelativeOrAbsolute));' –

+0

Положите точку останова на эту строку, я предполагаю, что NavigationService имеет значение null. Когда он ломается, наведите указатель мыши на него, чтобы увидеть его значение –

ответ

1

NavigationService является свойством PhoneApplicationPage, который устанавливается после навигации.

public MainPage() 
{ 
    InitializeComponent(); 
} 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (iso.Contains("isoServer") == false) 
    { 
     iso["isoServer"] = "http://domain.com/appTerminalBD"; 
     NavigationService.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
    } 
} 
+0

Но как правильно использовать этот метод для конструктора? –

+0

@ ReneSá Почему вы хотите сделать это в конструкторе в первую очередь? Это не имеет большого смысла. Когда вы немедленно перейдете в «OnNavigatedTo», MainPage не появится. – lisp

+0

Я понимаю. Но я сомневаюсь в том, как вызвать этот метод на конструкторе –

0

я написал ниже код и этот код отлично работает для меня:

public MainPage() 
{ 
    InitializeComponent(); 

if (iso.Contains("isoServer") == false) 
    { 
     iso["isoServer"] = "http://domain.com/appTerminalBD"; 
     this.Loaded += (s, e) => 
      { 
       var ns = NavigationService; 
       ns.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
      }; 
    } 
} 
+0

Навигационный код не выполняется во время строительства! Это связано только с событием «Loaded» во время строительства. Он выполняется задолго до этого, фактически, он выполняется даже позже, чем мой код с OnNavigatedTo (OnNavigatedTo выполняется сначала, Loaded later). – lisp

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