2011-05-01 70 views
0

我目前有一个类,它使用Linq将XML传递到我的XAML页面中的ListBox中。我从教程中获得了这个,并且想知道,我能够使它出现在一个数据透视表中吗?在Linq feed的后台代码中创建数据透视表

我的想法是加载进料,并为每个项目创建一个支点页面只是在后台代码(在我的数据,像这样:的foreach项,创建一个新的支点,与其他内容)

这是可能的? 我目前通过结合装载和使用“的TextBlock文本=”在XAML {绑定ID}“/>”,并在后台代码装载进料得到的数据为列表框如下:

myFeed.LoadFeed(//name of the listbox that currently has to exist in XAML) 

这里是我的代码加载XML源并发送到列表框

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






    } 
} 

什么可以用来保存数据,以便它可以在一个数据透视表中? 我该如何解析每个项目的响应,并将其转换为新的数据透视表?

回答

0

是的,你可以。您需要为Pivot控件提供一个数据模板。注意在Pivote级别上定义的头模板,而不是在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; } 
}