我有一个组合框,其项目取自服务器上的json。我想将组合框的默认值设置为“ Pendidikan Moral”(这是第6个索引)
XAML:
<ComboBox
x:Name="serialBox"
ItemsSource="{x:Bind SerialList}"
PlaceholderText="Pilih Serial"
SelectionChanged="SerialBox_SelectionChanged" />
代码:
List<Serial> SerialList = new List<Serial>();
try
{
string urlPath = "https://mhnkp2.com/school/api-v3/Fetch/serial";
var httpClient = new HttpClient(new HttpClientHandler());
var values = new List<KeyValuePair<string, string>>
{
};
httpClient.DefaultRequestHeaders.Add("SCH-API-KEY", "SCH_KEnaBiDeplebt");
var response = await httpClient.PostAsync(urlPath, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();
string jsonText = await response.Content.ReadAsStringAsync();
try
{
JsonObject jsonObject = JsonObject.Parse(jsonText);
JsonArray jsonData = jsonObject["data"].GetArray();
foreach (JsonValue groupValue in jsonData)
{
JsonObject groupObject1 = groupValue.GetObject();
string id = groupObject1["id"].GetString();
string name = groupObject1["nama"].GetString();
Serial serial = new Serial();
serial.ID = id;
serial.Name = name;
SerialList.Add(new Serial()
{
ID = serial.ID,
Name = serial.Name
});
}
serialBox.SelectedIndex = 6;
}
Serial.cs
class Serial
{
public string ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return this.Name;
}
}
在上面的代码中,我遇到了一个问题,它出现了一条错误消息,如下图所示:
如何处理?
答案 0 :(得分:0)
您的SerialList是否实现ObservableCollection?该集合知道如何通知UI。因此,还有一点。 x:Bind绑定到类后面的代码。 SerialList是隐藏的代码字段吗?还是ViewModel的一部分?
还有一点:您运行asink操作。但是XAML在创建的同时呈现。您应该在构造函数中设置SerialList。因为开始操作时,XAML是在并行线程中呈现的。因此,它可能会遇到null引用异常。因为它尚未加载。