【发布时间】:2022-01-07 16:51:08
【问题描述】:
我有一个 Json,如下图所示:
我想在 gridview 内的 gridview 中显示“专业”
XAML:
<GridView x:Name="asesmenGridView">
<GridView.ItemTemplate>
<DataTemplate>
<Grid x:Name="asesmenGrid">
<TextBlock
x:Name="judulT"
Text="{Binding Title}"/>
<GridView
x:Name="majorGridView"
ItemsSource="{Binding DataContext.majordatasource, ElementName=asesmenGridView}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="local:MajorClass">
<Grid>
<TextBlock
x:Name="kelasT"
Text="{x:Bind Major}" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
代码:
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
}
public List<MajorClass> majordatasource { get; set; } = new List<MajorClass>();
string urlPath = "https://.../choose-exam/2";
var httpClient = new HttpClient(new HttpClientHandler());
httpClient.DefaultRequestHeaders.Add("Authorization",
string.Format("Bearer {0}", tkn));
var response = await httpClient.GetAsync(urlPath);
string jsonText = await response.Content.ReadAsStringAsync();
try
{
JsonArray jsonArray = JsonArray.Parse(jsonText);
foreach (JsonValue groupValue in jsonArray)
{
string title = groupObject["title"].GetString();
JsonArray majorArray = groupObject["majors"].GetArray();
MajorClass majorC = new MajorClass();
foreach (JsonValue majorValue in majorArray)
{
JsonObject majorObject = majorValue.GetObject();
double majorID = majorObject["major_id"].GetNumber();
string major = majorObject["major"].GetString();
majorC.MajorID = (int)majorID;
majorC.Major = major + ",";
majordatasource.Add(majorC);
}
Ujian ujian = new Ujian();
ujian.Title = title;
ujiandatasource.Add(ujian);
}
asesmenGridView.ItemsSource = ujiandatasource;
乌剑类:
public class Ujian
{
public string Title { get; set; }
public ObservableCollection<MajorClass> majordatasource { get; set; }
public Ujian()
{
Title = string.Empty;
majordatasource = new ObservableCollection<MajorClass>();
}
public Ujian(string title)
{
Title = title;
}
}
public class MajorClass
{
public int MajorID { get; set; }
public string Major { get; set; }
}
}
从上面的代码来看,我并没有设法在gridview中的gridview上显示(检索到的数据只是最后一条数据,重复显示,如下图)。
如何处理?
【问题讨论】:
-
以下工作是否有效,此线程是否有任何更新?