设置从JSON绑定组合框的默认值

时间:2019-12-19 04:22:21

标签: c# json uwp combobox

我有一个组合框,其项目取自服务器上的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;
        }
    }

在上面的代码中,我遇到了一个问题,它出现了一条错误消息,如下图所示: error message

如何处理?

1 个答案:

答案 0 :(得分:0)

您的SerialList是否实现ObservableCollection?该集合知道如何通知UI。因此,还有一点。 x:Bind绑定到类后面的代码。 SerialList是隐藏的代码字段吗?还是ViewModel的一部分?

还有一点:您运行asink操作。但是XAML在创建的同时呈现。您应该在构造函数中设置SerialList。因为开始操作时,XAML是在并行线程中呈现的。因此,它可能会遇到null引用异常。因为它尚未加载。