2016-06-10 175 views
0

我正在嘗試將數據動態綁定到數據透視表和數據項。這裏是我如何綁定數據的編碼。將動態數據轉儲到數據透視表和數據透視表項

類:

public class SubMenu 
{ 
    public SubMenu() 
    { 
     TestList = new List<SubMenu>(); 
     ArticleDetails = new List<ArticleDetails>(); 
    } 

    public string SectionId { get; set; } 

    public string ParentSectionId { get; set; } 

    public string TitleofAccess { get; set; } 

    public string SMenu { get; set; } 

    public string Headline { get; set; } 

    public List<ArticleDetails> ArticleDetails { get; set; } 

    public List<SubMenu> TestList { get; set; } 
} 

XAML.cs代碼:

private async Task GetArticlesListingData() 
{ 
    try 
    { 
     var subMenuList = new DataModel.SubMenu(); 
     List<DataModel.ArticleDetails> detail = new List<DataModel.ArticleDetails>(); 

     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, Constants.Constants.URL.LiveUrl + "/api/Menu/GetSubMenuList?parentSectionId=1"); 
     request.Headers.Add("UserAgent", "Windows 8 app client"); 
     HttpClient client = new HttpClient(); 
     HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); 
     var result = await response.Content.ReadAsStringAsync(); 
     var rootObject = JArray.Parse(result); 

     for (var i = 0; i < rootObject.Count; i++) 
     { 
      subMenuList.TestList.Add(new DataModel.SubMenu() 
      { 
       SMenu = rootObject[i]["Title"].ToString(), 
       SectionId = rootObject[i]["SectionId"].ToString()      
      }); 
     } 

     HttpRequestMessage request1 = new HttpRequestMessage(HttpMethod.Get, "http://52.70.18.77:84/api/News/NewsHome/Listing?recordCount=20&sectionName=National&districtName=chennai"); 
     request1.Headers.Add("UserAgent", "Windows 8 app client"); 
     request1.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
     request1.Headers.Add("Authorization", "bearer " + accessToken); 

     HttpClient client1 = new HttpClient(); 
     HttpResponseMessage response1 = await client1.SendAsync(request1, HttpCompletionOption.ResponseHeadersRead); 
     var result1 = await response1.Content.ReadAsStringAsync(); 
     result1 = Regex.Replace(result1, "<[^>]+>", string.Empty); 
     var rootObject1 = JArray.Parse(result1); 
     int mainitemsCount = rootObject1.Count(); 

     for (int i = 0; i < mainitemsCount; i++) 
     {      
      subMenuList.ArticleDetails.Add(new DataModel.ArticleDetails 
      { 
       Articleid = rootObject1[i]["ArticleId"].ToString(), 
       Abstract = rootObject1[i]["Abstract"].ToString(), 
       URL = rootObject1[i]["Url"].ToString(), 
       HeadLine = rootObject1[i]["HeadLine"].ToString(),      
      });      
     } 
     pivotSubMenu.ItemsSource = subMenuList;     
    } 
    catch() 
    { 
    } 
} 

而這裏就是我試圖將數據綁定我的XAML代碼:

<Pivot x:Uid="Pivot" x:Name="pivotSubMenu"        CommonNavigationTransitionInfo.IsStaggerElement="True" 
     SelectionChanged="pivotSubMenu_SelectionChanged"> 
    <Pivot.HeaderTemplate> 
     <DataTemplate> 
      <ListView ItemsSource="{Binding TestList}"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
        <TextBlock Text="{Binding SMenu}"/> 
        </DataTemplate> 
       </ListView.ItemTemplate>           
      </ListView>          
     </DataTemplate> 
    </Pivot.HeaderTemplate> 
    <PivotItem> 
     <ListView Background="Brown" ItemsSource="{Binding ArticleDetails}" 
        ItemTemplate="{StaticResource ArticlesLisitngTemplate}" Margin="-17 0 -15 0"> 
     </ListView> 
    </PivotItem>        
</Pivot> 

導致我的Pivot輸出

Output of my Pivot

我想要將數據從一個列表綁定到標題和其他到PivotItem。 代碼中是否有任何錯誤。我無法在UI中查看數據。我得到空白屏幕。

請有人建議進行下一步。

+0

綁定到xaml視圖時始終使用可觀察集合。當源代碼更新時,它將更新用戶界面 – Eldho

+0

@eldho可以請你在示例中解釋如何在綁定數據時使用observable集合,我之前沒有使用它。謝謝。 –

+0

ObservableCollection 集合;這是您可以創建'ObservableCollection '的可觀察集合。' http://stackoverflow.com/questions/4279185/what-is-the-use-of-observablecollection-in-net – Eldho

回答

1

pivotSubMenu.DataContext = subMenuList; 

,而不是

pivotSubMenu.ItemsSource = subMenuList; 

樞軸頭代碼:

<PivotItem> 
    <PivotItem.Header> 
    <ListView ItemsSource="{Binding TestList}"> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding SMenu}"/> 
     </DataTemplate> 
     </ListView.ItemTemplate>           
    </ListView> 
    </PivotItem.Header> 
</PivotItem> 
+0

謝謝Chirag Shah 。它正在爲pivotitem工作。但是問題出在PivotHeader中。我在列表中的計數是5,但在UI中只顯示了列表中的第一項。有沒有辦法綁定PivotHeader中的所有數據。先謝謝你。 –

+0

我認爲我們不能在代碼中編輯時在PivotItem中聲明Header。 。 –

+0

哦,對不起!做了chages。 –

1

我已經發布了一個答案的一個非常類似的問題在這裏: Working with Pivot

基本上,你必須指定一個模板HeaderTemplate中和你樞紐控制的ItemTemplate屬性。

+0

好的,謝謝@Arnaud。讓我用我的應用程序檢查代碼,並讓你知道結果。 –

+0

謝謝...它工作正常.. –