2012-04-19 3 views
0

где я здесь не так?Ошибка в телефонной книге Windows Phone

private void lstCars_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    string currCar = (sender as ListBox).SelectedItem as string; 
    NavigationService.Navigate(new Uri("/ViewCarDetails.xaml?info=" + currCar, UriKind.Relative)); 
} 

вот страница им пытаются перейти к

 public ViewCarDetails(string registrationNum) 
    { 
     //stuff 
    } 

и вот код, программа переходит к тому, когда я получаю сообщение об ошибке (в App.xaml.cs)

 private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
    { 
     if (System.Diagnostics.Debugger.IsAttached) 
     { 
      // A navigation has failed; break into the debugger 
      System.Diagnostics.Debugger.Break(); 
     } 
    } 

ив проверил URI, но нет опечаток Спасибо вам

+0

Какая ценность currCar? Попробуйте передать currCar следующим образом: Uri.EscapeUriString (currCar) – Eugene

+1

не может найти что-то неправильное в коде. Код для навигации правильный. Проверьте местоположение файла xaml. это может быть в другой папке – TutuGeorge

+0

Попробуйте добавить, NavigationService.Navigate (новый Uri (@ "/ ViewCarDetails.xaml? info =" + currCar, UriKind.Relative)); – nucleons

ответ

1

проблема заключается в том, что вы приехали передача параметра через конструктор NavigationService и ViewCarDetails ожидает параметра, который вы не проходите.

Чтобы решить эту проблему, вы должны создать конструктор без параметров и принять параметр, который вы проходите через NavigationService от NavigatedTo события следующим образом:

public ViewCarDetails() 
    { 
     //stuff 
    } 

и

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     string registrationNum = string.Empty; 
     if (NavigationContext.QueryString.TryGetValue("index", out registrationNum)) 
     { 
         //do stuff 
     } 
    } 

Попробуйте и дайте нам знать,

ADDED:

public class ViewCarDetails : PhoneApplicationPage 
{ 
    private string registrationNum; 

    public ViewCarDetails() 
     { 
      //stuff 
     } 
    protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      registrationNum = string.Empty; 
      if (NavigationContext.QueryString.TryGetValue("index", out registrationNum)) 
      { 
          //do stuff 
      } 
     } 
    //other methods and properties 
} 

С уважением,

+0

им немного смущенный. im новое для всего этого. где я использую onnavigatedto? как получить регистрационный номер в конструкторе ViewCarDetails? Спасибо – user1290653

+0

снова проверьте ответ. добавлено больше кода. забудьте конструкторы. С WP7 вы перемещаетесь между страницами, не вызывая ссылочные объекты. –

+1

kk :) все фиксированный. Я поместил весь код в конструктор в метод навигации, который вы мне дали, и теперь я могу использовать регистрационный номер, чтобы сделать запрос :) – user1290653

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