在Linq feed的后台代码中创建Pivot
本文关键字:创建 Pivot 代码 后台 Linq feed | 更新日期: 2023-09-27 17:54:15
我目前有一个类,它使用Linq to XML获取XML提要并将其分派到XAML页面中的ListBox。我从一个教程中拿了这个,我想知道,我能让它出现在一个枢轴吗?
我的想法是加载提要,并在后台代码中为每个项目创建一个pivot页面(就像,在我的数据中的每个项目,创建一个新的pivot,与其他内容)
这可能吗?我目前通过绑定加载并使用"TextBlock Text="{Binding Id}"/>"在XAML中获取数据到ListBox中,并在后台代码中加载提要,如下所示:
myFeed.LoadFeed(//name of the listbox that currently has to exist in XAML)
下面是加载XML提要并分派到Listbox的代码
public class FeedItem
{
public string Id { set; get; }
public string Text { set; get; }
}
public class Feed
{
ListBox myContext;
public void LoadFeed(ListBox context)
{
myContext = context;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://myDataSource"));
request.BeginGetResponse(new AsyncCallback(ReadCallback), request);
}
private static readonly XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request =
(HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response =
(HttpWebResponse)request.EndGetResponse(asynchronousResult);
XDocument doc = XDocument.Load(response.GetResponseStream());
List<FeedItem> feedItems = (from question in doc.Descendants(m + "properties")
select new FeedItem()
{
Id = question.Descendants().ToList()[0].Value,
Text = question.Descendants().ToList()[1].Value
}).ToList();
myContext.Dispatcher.BeginInvoke(() => { myContext.ItemsSource = feedItems; });
}
}
什么可以用来保存数据,使其可以在枢轴?如何将响应逐项解析为新的枢轴?
可以。您需要为Pivot控件提供一个数据模板。请注意标题模板,它是在pivot级别定义的,而不是在PivotItem的级别上定义的。
<Grid x:Name="LayoutRoot" Background="Transparent">
<controls:Pivot ItemsSource="{Binding MyPivots}">
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyTitle}"/>
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<controls:PivotItem>
<TextBlock Text="{Binding YourRssText}" />
</controls:PivotItem>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
和代码隐藏类:
public partial class MainPage : PhoneApplicationPage{
public List<RssFeed> MyPivots { get; set; }
// Constructor
public MainPage()
{
MyPivots = new List<RssFeed>
{
new RssFeed{ MyTitle = "Title1", YourRssText = "Body1"},
new RssFeed{ MyTitle = "Title2", YourRssText = "Body2"},
new RssFeed{ MyTitle = "Title3", YourRssText = "Body3"},
};
InitializeComponent();
this.DataContext = this;
}
}
public class RssFeed
{
public string MyTitle { get; set; }
public string YourRssText { get; set; }
}