2012-04-14 4 views
0

Ich erhalte eine NULL-Referenz-Ausnahme, während ich versuche, mit dem folgenden Code von meinem RSS-Reader zurück zur vorherigen MainPage.xaml zu navigieren. Kann mir bitte jemand helfen, indem ich Ihnen rate, was ich tun muss, um diesen Fehler zu vermeiden?WP7 NullReferenceException bei der Navigation zurück

public partial class FeedDetailsPage : PhoneApplicationPage 
{ 
    object _selectedFeedItem; 
    object _selectedFeed; 

    public FeedDetailsPage() 
    { 
     InitializeComponent(); 
     Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded); 
     LoadFeed(); 
    } 

    private void LoadFeed() 
    { 
     FrameworkElement root = Application.Current.RootVisual as FrameworkElement; 
     var currentFeed = root.DataContext as ATP_Tennis_App.ViewModels.FeedViewModel; 
     WebClient wc = new WebClient(); 
     wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
     wc.DownloadStringAsync(new Uri(currentFeed.FeedUrl)); 
     _selectedFeed = currentFeed; 
    } 

    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     // if (e.Error != null) { return; } 

     var rssFeed = XElement.Parse(e.Result); 

     var currentFeed = this.DataContext as ATP_Tennis_App.ViewModels.FeedViewModel; 
     var items = from item in rssFeed.Descendants("item") 

        select new ATP_Tennis_App.ViewModels.FeedItemViewModel() 
        { 

         Title = item.Element("title").Value, 
         DatePublished = DateTime.Parse(item.Element("pubDate").Value), 
         Url = item.Element("link").Value, 
         Description = item.Element("description").Value 
        }; 
     foreach (var item in items) 
      currentFeed.Items.Add(item); 

    } 

    private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     // Cancel default navigation 

     e.Cancel = true; 
     PhoneApplicationFrame root = (PhoneApplicationFrame)Application.Current.RootVisual; 
     root.GoBack(); 



    } 


    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     this.DataContext = _selectedFeed; 
    } 



    private void lstFeeds_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     _selectedFeedItem = (sender as ListBox).SelectedItem; 
     NavigationService.Navigate(new Uri("/FeedItemDetailsPage.xaml", UriKind.Relative)); 
     FrameworkElement root = Application.Current.RootVisual as FrameworkElement; 
     root.DataContext = _selectedFeedItem; 
    } 


} 

die Ausnahme wird auf der Leitung geworfen

wc.DownloadStringAsync(new Uri(currentFeed.FeedUrl)); 
+0

Was ist Ihre volle Ausnahme StackTrace? Welche Codezeile wirft die NRE? – ColinE

+0

ColinE, Ich habe die Frage aktualisiert, um die Zeile zu zeigen, die die Ausnahme wirft –

+0

Nur eine Vermutung: Ist Ihr currentFeed == null? Dies kann passieren, wenn der DataContext der Wurzel Null ist oder kein FeedViewModel. Wo legen Sie den DataContext fest? –

Antwort

0

ich dieses Problem gelöst haben. Der Fehler war in meinem MainPage-Skript. Ich habe die datakontext Einstellung in das Hauptskript verschoben und jetzt wird der Fehler nicht mehr geworfen

Verwandte Themen