将动态数据转储到数据透视表和数据透视表项
我正在尝试将数据动态绑定到数据透视表和数据项。这里是我如何绑定数据的编码。将动态数据转储到数据透视表和数据透视表项
类:
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§ionName=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输出
我想要将数据从一个列表绑定到标题和其他到PivotItem
。 代码中是否有任何错误。我无法在UI中查看数据。我得到空白屏幕。
请有人建议进行下一步。
做
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>
谢谢Chirag Shah 。它正在为pivotitem工作。但是问题出在PivotHeader中。我在列表中的计数是5,但在UI中只显示了列表中的第一项。有没有办法绑定PivotHeader中的所有数据。先谢谢你。 –
我认为我们不能在代码中编辑时在PivotItem中声明Header。
哦,对不起!做了chages。 –
我已经发布了一个答案的一个非常类似的问题在这里: Working with Pivot
基本上,你必须指定一个模板HeaderTemplate中和你枢纽控制的ItemTemplate属性。
好的,谢谢@Arnaud。让我用我的应用程序检查代码,并让你知道结果。 –
谢谢...它工作正常.. –
绑定到xaml视图时始终使用可观察集合。当源代码更新时,它将更新用户界面 – Eldho
@eldho可以请你在示例中解释如何在绑定数据时使用observable集合,我之前没有使用它。谢谢。 –
ObservableCollection集合;这是您可以创建'ObservableCollection '的可观察集合。' http://stackoverflow.com/questions/4279185/what-is-the-use-of-observablecollection-in-net –
Eldho