繁体   English   中英

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

[英]Set Default Value for binding combobox from json

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

串口.cs

class Serial
    {
        public string ID { get; set; }

        public string Name { get; set; }

        public override string ToString()
        {
            return this.Name;
        }
    }

从上面的代码我有一个问题,它出现如下图所示的错误消息: 错误信息

如何处理?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM