您知道要添加到代码中的内容,以便从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);
}
}
内容未被识别,我一直得到NullReference,当我在TextBlock上链接Summary时,文章的日期显示正常。此外,每当我在列表中列出所有文章列出时,我都会收到错误“你只能使用OnNavigatedTo之间的状态”和“OnNavigatedFrom”。当我按下主页按钮调试器显示(应用程序崩溃)。
这就是我得到的: Microsoft.Phone.dll中出现“System.InvalidOperationException”类型的第一次机会异常 System.Runtime.Serialization.dll中发生了'System.Security.SecurityException'类型的第一次机会异常 mscorlib.dll中发生了'System.Reflection.TargetInvocationException'类型的第一次机会异常 System.Runtime.Serialization.dll中发生了'System.Security.SecurityException'类型的第一次机会异常 线程''(0xfc2037a)已退出代码0(0x0)。 线程''(0xe880366)已退出,代码为0(0x0)。 线程''(0xe310372)已退出代码0(0x0)。 线程''(0xf970392)已退出,代码为0(0x0)。 线程''(0xe470392)已退出,代码为0(0x0)。
这是我正在处理的Feed:http://www.zimo.co/feed/ 我的主要问题是如何通过nullref。异常并获取内容。
答案 0 :(得分: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...