我无法显示我的RSS阅读器的结果

时间:2014-02-05 19:47:08

标签: c# xaml 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 Feed:rss feed link

这确实是一个有效的RSS提要,但我从来没有将项目添加到我的列表框中。 (警报永远不会显示),我找不到原因。有人会有想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的主要问题是您忽略了Feed中的XML命名空间。

它应该类似于:

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

有关RSS相关示例,请参阅this Question

之后,我不太确定将DataTemplate应用于Items。习惯是通过ItemsSource属性进行绑定。

不要对局部变量名使用_。它们只能在私人领域中使用。