如何在 WPF 中填充 datagrid cobmo 框列?

问题描述

我在用组合框填充数据网格组合框列时遇到问题,数据网格列未显示任何数据。但是,首先。这是我的绑定类:

 public class StartingEleven
        {
            public string name { get; set; }
            public int shirt_number { get; set; }
            public string position { get; set; }
            public bool captain { get; set; }
            
        }

 public class DGObject
        {
            public string FifaID { get; set; }
            public string Venue { get; set; }
            public string Location { get; set; }
            public DateTime Date { get; set; }
            public int Goals { get; set; }
            public int Penalties { get; set; }
            public string AwayTeamCode { get; set; }
            public int GuestGoals { get; set; }            
            public List<StartingEleven> HomeTeam11 { get; set; }
        }

还有我的根对象:

 public class RootObject
        {
            public string venue { get; set; }
            public string location { get; set; }
            public string status { get; set; }
            public string time { get; set; }
            public string fifa_id { get; set; }
            public Weather weather { get; set; }
            public string attendance { get; set; }
            public List<string> officials { get; set; }
            public string stage_name { get; set; }
            public string home_team_country { get; set; }
            public string away_team_country { get; set; }
            public DateTime datetime { get; set; }
            public string winner { get; set; }
            public string winner_code { get; set; }
            public HomeTeam home_team { get; set; }
            public AwayTeam away_team { get; set; }
            public List<HomeTeamEvent> home_team_events { get; set; }
            public List<AwayTeamEvent> away_team_events { get; set; }
            public HomeTeamStatistics home_team_statistics { get; set; }
            public AwayTeamStatistics away_team_statistics { get; set; }
            public DateTime last_event_update_at { get; set; }
            public DateTime last_score_update_at { get; set; }
        }

有句话说:一张图片值一千字...所以,更准确地说,首先,这是我遇到问题的输出

User control "Matches"

这是我加载此数据网格的方法

        public static void LoadAllEventsForHomeTeam(System.Windows.Controls.ComboBox cb,System.Windows.Controls.DataGrid dg)
        {
            var url = new Url("http://worldcup.sfg.io/matches/country?fifa_code=");
            string urlEndpoint = GetItemFromComboBoxWpf(cb);
            var request = url + urlEndpoint;
            string cbItem = cb.SelectedItem.ToString();

                    System.Windows.Controls.DataGridTextColumn c1 = new System.Windows.Controls.DataGridTextColumn();
                    c1.Header = "Game ID";
                    c1.Binding = new System.Windows.Data.Binding("FifaID");
                    c1.Width = 120;
                    dg.Columns.Add(c1);

                    System.Windows.Controls.DataGridTextColumn c2 = new System.Windows.Controls.DataGridTextColumn();
                    c2.Header = "City";
                    c2.Binding = new System.Windows.Data.Binding("Venue");
                    c2.Width = 95;
                    dg.Columns.Add(c2);

                    System.Windows.Controls.DataGridTextColumn c3 = new System.Windows.Controls.DataGridTextColumn();
                    c3.Header = "Location";
                    c3.Binding = new System.Windows.Data.Binding("Location");
                    c3.Width = 150;
                    dg.Columns.Add(c3);

                    System.Windows.Controls.DataGridTextColumn c4 = new System.Windows.Controls.DataGridTextColumn();
                    c4.Header = "Date";
                    c4.Binding = new System.Windows.Data.Binding("Date");
                    c4.Width = 180;
                    dg.Columns.Add(c4);

                    System.Windows.Controls.DataGridTextColumn c5 = new System.Windows.Controls.DataGridTextColumn();
                    c5.Header = "Goals";
                    c5.Binding = new System.Windows.Data.Binding("Goals");
                    c5.Width = 75;
                    dg.Columns.Add(c5);

                    System.Windows.Controls.DataGridTextColumn c6 = new System.Windows.Controls.DataGridTextColumn();
                    c6.Header = "Penalties";
                    c6.Binding = new System.Windows.Data.Binding("Penalties");
                    c6.Width = 100;
                    dg.Columns.Add(c6);

                    System.Windows.Controls.DataGridTextColumn c7 = new System.Windows.Controls.DataGridTextColumn();
                    c7.Header = "Guest";
                    c7.Binding = new System.Windows.Data.Binding("AwayTeamCode");
                    c7.Width = 90;
                    dg.Columns.Add(c7);

                    System.Windows.Controls.DataGridTextColumn c8 = new System.Windows.Controls.DataGridTextColumn();
                    c8.Header = "Guest score";
                    c8.Binding = new System.Windows.Data.Binding("GuestGoals");
                    c8.Width = 110;
                    dg.Columns.Add(c8);

                    System.Windows.Controls.DataGridComboBoxColumn c9 = new System.Windows.Controls.DataGridComboBoxColumn();
                    c9.Header = "Team 11";
                    c9.TextBinding = new System.Windows.Data.Binding("HomeTeam11");
                    c9.Width = 110;
                    dg.Columns.Add(c9);
            try
            {

                dispatcher.Currentdispatcher.BeginInvoke(new Action(async () =>
                // await Task.Run(async () =>
                {
                    if (request != null)
                    {
                        List<Teams.RootObject> matches = await request.GetJsonAsync<List<Teams.RootObject>>();
                        foreach (var match in matches)
                        {
                                                    
                            if (cbItem.Contains(match.home_team.code))
                            {


                                dg.Items.Add(new Teams.DGObject
                                {
                                    FifaID = match.fifa_id,Venue = match.venue,Location = match.location,Date = match.datetime.ToLocalTime(),Goals = match.home_team.goals,Penalties = match.home_team.penalties,AwayTeamCode = match.away_team.code,GuestGoals = match.away_team.goals,HomeTeam11 = match.home_team_statistics.starting_eleven
                                });

                                }
                            }
                        }                    
                }));
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }

如您所见,此方法将数据网格加载为所选球队的足球比赛事件。通过从组合框中选择一个项目,这里命名为 cb,一个方法通过完成一个 API 调用来形成一个 API 调用,选择组合框项目作为端点,从而加载数据网格,其中包含德国作为主队参加的比赛。现在,问题来了:最后一列,此处命名为 Team11 应包含组合框,组合框应包含参加该比赛的 11 名球员(起始 11 名)。被选中的球队,在这种情况下,德国显然作为主队打了四场比赛。因此,在 Team11 列中应该有四个组合框,每场比赛一个,放置在每一行,每个组合框应包含参加该特定比赛的 11 名球员,但 Team11 列中没有数据。有任何想法吗?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...