我有这堂课:
class clsFeed
{
public string Title { get; set; }
public string Summary { get; set; }
public string PublishDate { get; set; }
public string Content { get; set; }
public string Image { get; set; }
public Uri Link { get; set; }
}
我需要获取位于标签 http://www.unnu.com/feed内的标签,并在列表中的主页上打开此地址以及其他数据。这是我正在使用的代码。它可以编译,但在我看来他一直是空的。
private void UpdateFeedList(string feedXML)
{
// Load the feed into a SyndicationFeed instance
StringReader stringReader = new StringReader(feedXML);
XmlReader xmlReader = XmlReader.Create(stringReader);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
//var counter = feed.Items.Count();
var lista = feed.Items.ToList().Select(s => new clsFeed
{
Title = s.Title.Text,
Summary = s.Summary.Text,
PublishDate = s.PublishDate.Date.ToString(),
Content = "",
Imagem = s.Summary.Text.Split('<')[5].Replace("img src='", "").Replace("' border='0' />", ""),
Link = s.Links.FirstOrDefault().Uri
}).ToList();
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// Bind the list of SyndicationItems to our ListBox
feedListBox.ItemsSource = lista;
feedListBox.ItemsSource = feed.Items;
//progressIndicator.IsVisible = false;
});
//gridProgressBar.Visibility = Visibility.Collapsed; //Quando atualiza a lista de feeds esconde a progress bar.
panorama.Visibility = Visibility.Visible;
}
private void UpdateFeedList(string feedXML)
{
// Load the feed into a SyndicationFeed instance
StringReader stringReader = new StringReader(feedXML);
XmlReader xmlReader = XmlReader.Create(stringReader);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
// In Windows Phone OS 7.1, WebClient events are raised on the same type of thread they were called upon.
// For example, if WebClient was run on a background thread, the event would be raised on the background thread.
// While WebClient can raise an event on the UI thread if called from the UI thread, a best practice is to always
// use the Dispatcher to update the UI. This keeps the UI thread free from heavy processing.
var lista = feed.Items.ToList().Select(s => new clsFeed
{
Title = s.Title.Text,
Summary = s.Summary.Text,
PublishDate = s.PublishDate.Date.ToString(),
Content = "",
Imagem = Regex.Match(feedXML, @"<img\s+src='(.+)'\s+border='0'\s+/>").Groups[1].Value,
Link = s.Links.FirstOrDefault().Uri
}).ToList();
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// Bind the list of SyndicationItems to our ListBox
feedListBox.ItemsSource = lista;
});
gridProgressBar.Visibility = Visibility.Collapsed; //Quando atualiza a lista de feeds esconde a progress bar.
panorama.Visibility = Visibility.Visible;
}
这有效,但屏幕上没有出现任何内容。有谁知道为什么?
我的列表框保持不变。
不要有任何错误。
<ListBox x:Name="feedListBox" HorizontalAlignment="Left" Height="537" Margin="10,72,0,0" VerticalAlignment="Top" Width="398" SelectionChanged="listFeedBox_SelectionChanged" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel VerticalAlignment="Top">
<Grid>
<Image Width="400" Height="130" Name="img" Source="{Binding feed.ImageUrl}"/>
</Grid>
<TextBlock TextDecorations="Underline" FontSize="24" Name="feedTitle" TextWrapping="Wrap" Margin="12,0,0,0" HorizontalAlignment="Left" Text="{Binding Title.Text, Converter={StaticResource RssTextTrimmer}}" >
<TextBlock.Foreground>
<SolidColorBrush Color="#FF159DDE"/>
</TextBlock.Foreground>
</TextBlock>
<TextBlock Name="feedSummary" TextWrapping="Wrap" Margin="12,0,0,0" Text="{Binding Summary.Text, Converter={StaticResource RssTextTrimmer}}" />
<TextBlock Name="feedPubDate" Foreground="{StaticResource PhoneSubtleBrush}" Margin="12,0,0,10" Text="{Binding PublishDate}" />
<TextBlock Name="feedContent" Text="{Binding Content}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>