2012-04-21 3 views
0

Знаете ли вы, что добавить в код, чтобы открыть желаемую статью из RSS-ленты. В новой форме.Как открыть статью RSS-канала в новой форме?

В новой форме я должен получить название и содержание статьи, изображения не является обязательным

Вот мой код, где список статей:

private void ls_text_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     try 
     { 
    ListBox listBox = sender as ListBox; 

      if (listBox != null && listBox.SelectedItem != null) 
      { 
       SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem; 

       if (sItem.Links.Count > 0) 
       { 
        if (listBox != null && listBox.SelectedItem != null) 
      { 

       SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem; 
       PhoneApplicationService.Current.State["myItem"] = sItem; 

       NavigationService.Navigate(new Uri("/Clanak.xaml",UriKind.Relative));// leads to article form 

       } 
      } 
     } 
     catch (Exception f) 
     { 

      MessageBox.Show(f.Message, "", MessageBoxButton.OK); 
     } 
    } 

Я написал код, который выполняет большую часть работы:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     try 
     { 
      SyndicationItem sItem = PhoneApplicationService.Current.State["myItem"] as SyndicationItem; 
      PageTitle.Text = sItem.Title.Text; //Title would go in the pagetitle of the form , Title shows fine 
      PageTitle.FontSize = 40; 
      //tb_Content.Text = sItem.Summary.Text; //all goes fine 

      foreach (SyndicationItem item in sItem.SourceFeed.Items) 
      { 
       foreach (SyndicationElementExtension ext in item.ElementExtensions) 
       { 

        if (ext.GetObject<XElement>().Name.LocalName == "encoded") 

         tb_Content.Text = ext.GetObject<XElement>().Value; //textblock for content, throws NullReferenceException 
       } 
      } 
     } 
     catch (Exception f) 
     { 

      MessageBox.Show(f.Message, "Error clanak", MessageBoxButton.OK); 
     } 
    } 

Содержимое не распознано, и я получаю NullReferen все время, когда я связывал Summary на TextBlock, дата статьи была показана в порядке. Также каждый раз, когда я собираюсь в списке, где перечислены все статьи, я получаю сообщение об ошибке «Вы можете использовать только состояние между OnNavigatedTo» и «OnNavigatedFrom». Когда я нажимаю кнопку «домой», появляется отладчик (сбой приложения).

Это то, что я получаю: Первый шанс исключение типа «System.InvalidOperationException» произошло в Microsoft.Phone.dll Первый шанс исключение из «System.Security.SecurityException» типа произошло в System.Runtime.Serialization .dll Первое случайное исключение типа «System.Reflection.TargetInvocationException» произошло в mscorlib.dll Первое случайное исключение типа «System.Security.SecurityException» произошло в System.Runtime.Serialization.dll Поток '' (0xfc2037a) вышел с кодом 0 (0x0). Поток '' (0xe880366) вышел с кодом 0 (0x0). Поток '' (0xe310372) вышел с кодом 0 (0x0). Поток '' (0xf970392) вышел с кодом 0 (0x0). Поток '' (0xe470392) вышел с кодом 0 (0x0).

Это ссылка, над которой я работаю: http://www.zimo.co/feed/ моей главной проблемой является то, как пройти мимо nullref. исключение и получить контент.

+0

В настоящее время я Я ищу предложения или указатели. Может, кто-нибудь раньше пробовал что-то подобное? – Goran303

ответ

2

Прежде всего, вы должны сохранить Item в каком-то месте, где у вас есть доступ к нему от другого Page.

Например:

SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem; 
PhoneApplicationService.Current["myItem"] = sItem; 

Чем, создать новую страницу и перейдите к нему NavigationService.Navigate(new Uri("/newPage.xaml"));

В конструкторе деталей страницы, заполнить заголовок и содержание, как вам нужно

SyndicationItem sItem = PhoneApplicationService.Current["myItem"] as SyndicationItem; 
// set Title and so on... 
+0

мой код в "целевой" форме: (я NullReferenceException) частной ничтожной PhoneApplicationPage_Loaded (объект отправителя, RoutedEventArgs е) { попробовать {SyndicationItem SITEM = PhoneApplicationService.Current.State [ "postovi"] в качестве SyndicationItem; tb_Content.Text = sItem.Content.ToString(); // textblock для содержимого PageTitle.Text = sItem.Title.ToString(); // Заголовок будет занесен в pagetitle формы } catch (Исключение f) { MessageBox.Показать (f.Message, «Ошибка», MessageBoxButton.OK); } } – Goran303

+0

Проверьте, что 'sItem' или' sItem.Content' является 'null'. Попробуйте передать более простые типы данных, такие как 'string', чтобы убедиться, что все работает. Убедитесь, что объект сохранен в 'State', прежде чем вы его получите. – Ku6opr

+0

Строка прошла, хорошо. – Goran303

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

  • Нет связанных вопросов^_^