2014-02-05 43 views
0

我有以下問題:我不能顯示我的RSS閱讀器的結果

這是我的XAML代碼:

<ListBox Grid.Row="1" Name="ResultsView"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal"> 
           <StackPanel Width="340"> 
            <TextBlock TextWrapping="Wrap" Text="{Binding Path=Title}"/> 
            <TextBlock FontWeight="Bold" Text="{Binding Path=Author}"/> 
            <TextBlock Text="{Binding Path=Published}"/> 
            <TextBlock Text="{Binding Path=Guid}"/> 
            <TextBlock Text="{Binding Path=Link}"/> 
            <TextBlock Text="{Binding Path=Description}"/> 
           </StackPanel> 
          </StackPanel> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 

,這我綁定列表框代碼:

private void Feed(object Sender, DownloadStringCompletedEventArgs e) 
     { 
      XElement _xml; 
      try 
      { 
       if (!e.Cancelled) 
       { 
        _xml = XElement.Parse(e.Result); 
        ResultsView.Items.Clear(); 
        foreach (XElement value in _xml.Elements("channel").Elements("item")) 
        { 
         Tweet _item = new Tweet(); 
         _item.Title = value.Element("title").Value; 
         _item.Author = value.Element("author").Value; 
         _item.Published = DateTime.Parse(value.Element("pubDate").Value); 
         _item.Guid = value.Element("guid").Value; 
         _item.Link = value.Element("link").Value; 
         _item.Description = Regex.Replace(value.Element("description").Value, 
         @"<(.|\n)*?>", String.Empty); 

         ResultsView.Items.Add(_item); 
         MessageBox.Show("test");  
        } 
       } 
      } 
      catch 
      { 
       // Ignore Errors 
      } 
     } 

當我啓動綁定的代碼:

private void Lookup_Click(object sender, RoutedEventArgs e) 
     { 
      WebClient _client = new WebClient(); 
      _client.DownloadStringCompleted += Feed; 
      _client.DownloadStringAsync(new Uri((_value + Location.Text))); 
     } 

這是RSS訂閱源:rss feed link

這裏確實是一個有效的RSS源,但我從來沒有添加一個項目到我的列表框。 (警報從不顯示),我無法找出原因。有人會有想法嗎?提前致謝。

+0

是'ResultsView.Items'是一個'ObservableCollection'?你也可以刪除'try catch'並啓用異常來查看是否有任何錯誤 – dkozl

+1

空的'catch {}'非常擅長隱藏根本問題。嘗試沒有改變。 –

+1

這確實是一個壞主意,因爲問題實際上是日期時間的格式。 –

回答

0

您的主要問題是您忽略提要中的XML名稱空間。

它應該是這個樣子:

XNameSpace ns = ...; 
foreach (XElement value in _xml.Elements(ns + "channel").Elements(ns + "item")) 
... 

this Question一些RSS相關的例子。

之後,我不太確定DataTemplate是否適用於Items。習慣是通過ItemsSource屬性進行綁定。

而且不要在局部變量名稱上使用_。他們只能在私人領域使用。

+0

與此RSS源:http://cespage.com/silverlight/tutorials.xml它工作正常...所以我認爲這是一個問題與RSS飼料的權利? –

+0

在發佈的網址中沒有任何與xml名稱空間相關的內容... –