在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; });



    }
}

什么可以用来保存数据,使其可以在枢轴?如何将响应逐项解析为新的枢轴?

在Linq feed的后台代码中创建Pivot

可以。您需要为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; }
 }