C# 数据绑定工作不正常

C# 数据绑定工作不正常,c#,wpf,datagrid,C#,Wpf,Datagrid,我编写了一段代码,在反序列化之后填充一个DataGrid,但是填充中存在一些问题。这是在DataGrid中插入数据的代码: var leagueTable_Object = JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText); foreach (var classifica in leagueTable_Object.standing) { League_DataGrid.

我编写了一段代码,在反序列化之后填充一个
DataGrid
,但是填充中存在一些问题。这是在DataGrid中插入数据的代码:

var leagueTable_Object = 
        JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);

foreach (var classifica in leagueTable_Object.standing)
{
    League_DataGrid.Items.Add(new LeagueTable.Classifica(){
        name = classifica.position + " " + classifica.teamName});
    var name = new DataGridTextColumn();
    name.Binding = new Binding("name");
    League_DataGrid.Columns.Add(name);

    League_DataGrid.Items.Add(new LeagueTable.Classifica(){ 
               points = classifica.points});
    var points = new DataGridTextColumn();
    points.Binding = new Binding("points");
    League_DataGrid.Columns.Add(points);

    League_DataGrid.Items.Add(new LeagueTable.Classifica(){
               playedGames = classifica.playedGames});
    var playedGames = new DataGridTextColumn();
    playedGames.Binding = new Binding("playedGames");
    League_DataGrid.Columns.Add(playedGames);

    League_DataGrid.Items.Add(new LeagueTable.Classifica(){
               goals = classifica.goals });
    var goals = new DataGridTextColumn();
    goals.Binding = new Binding("goals");
    League_DataGrid.Columns.Add(goals);

    League_DataGrid.Items.Add(new LeagueTable.Classifica(){
               goalsAgainst = classifica.goalsAgainst });
    var goalsAgainst = new DataGridTextColumn();
    goalsAgainst.Binding = new Binding("goalsAgainst");
    League_DataGrid.Columns.Add(goalsAgainst);

    League_DataGrid.Items.Add(new LeagueTable.Classifica(){ 
                goalsDifference = classifica.goalDifference });
    var goalsDifference = new DataGridTextColumn();
    goalsDifference.Binding = new Binding("goalsDifference");
    League_DataGrid.Columns.Add(goalsDifference);
}
这是包含数据结构的类:

public struct Classifica
    {
        public string name { get; set; }
        public int points { get; set; }
        public int position { get; set; }
        public int playedGames { get; set; }
        public int goals { get; set; }
        public int goalsAgainst { get; set; }
        public int goalsDifference { get; set; }
    }
现在所有数据都插入到
数据网格中,但最终结果如下:

您如何查看与团队相关的数据被放在多行上,这当然不好。此外,数据还包含在绑定中未指定的列中,这非常奇怪。谁能解释一下我做错了什么

使用建议解决方案更新图像:

XAML结构:

 <DataGridTextColumn Binding="{Binding Path = 'name'}" 
          Header="Squadra" 
          CanUserResize="true" MinWidth="150" MaxWidth="200"/>

您正在遍历数据集中的每条记录,并为每列向网格中添加一次该项。只需添加一次列和一次项

var leagueTable_Object =
    JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);

DataGridTextColumn name = new DataGridTextColumn();
name.Binding = new Binding("name");
League_DataGrid.Columns.Add(name);

DataGridTextColumn points = new DataGridTextColumn();
points.Binding = new Binding("points");
League_DataGrid.Columns.Add(points);

DataGridTextColumn playedGames = new DataGridTextColumn();
playedGames.Binding = new Binding("playedGames");
League_DataGrid.Columns.Add(playedGames);

DataGridTextColumn goals = new DataGridTextColumn();
goals.Binding = new Binding("goals");
League_DataGrid.Columns.Add(goals);

DataGridTextColumn goalsAgainst = new DataGridTextColumn();
goalsAgainst.Binding = new Binding("goalsAgainst");
League_DataGrid.Columns.Add(goalsAgainst);

DataGridTextColumn goalsDifference = new DataGridTextColumn();
goalsDifference.Binding = new Binding("goalsDifference");
League_DataGrid.Columns.Add(goalsDifference);

foreach (var classifica in leagueTable_Object.standing)
{
    League_DataGrid.Items.Add(new LeagueTable.Classifica
    {
        name = classifica.position + " " + classifica.teamName,
        points = classifica.points,
        playedGames = classifica.playedGames,
        goals = classifica.goals,
        goalsAgainst = classifica.goalsAgainst,
        goalsDifference = classifica.goalDifference
    });

}

您正在遍历数据集中的每条记录,并为每一列向网格中添加一次该项。只需添加一次列和一次项

var leagueTable_Object =
    JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);

DataGridTextColumn name = new DataGridTextColumn();
name.Binding = new Binding("name");
League_DataGrid.Columns.Add(name);

DataGridTextColumn points = new DataGridTextColumn();
points.Binding = new Binding("points");
League_DataGrid.Columns.Add(points);

DataGridTextColumn playedGames = new DataGridTextColumn();
playedGames.Binding = new Binding("playedGames");
League_DataGrid.Columns.Add(playedGames);

DataGridTextColumn goals = new DataGridTextColumn();
goals.Binding = new Binding("goals");
League_DataGrid.Columns.Add(goals);

DataGridTextColumn goalsAgainst = new DataGridTextColumn();
goalsAgainst.Binding = new Binding("goalsAgainst");
League_DataGrid.Columns.Add(goalsAgainst);

DataGridTextColumn goalsDifference = new DataGridTextColumn();
goalsDifference.Binding = new Binding("goalsDifference");
League_DataGrid.Columns.Add(goalsDifference);

foreach (var classifica in leagueTable_Object.standing)
{
    League_DataGrid.Items.Add(new LeagueTable.Classifica
    {
        name = classifica.position + " " + classifica.teamName,
        points = classifica.points,
        playedGames = classifica.playedGames,
        goals = classifica.goals,
        goalsAgainst = classifica.goalsAgainst,
        goalsDifference = classifica.goalDifference
    });

}

您正在遍历数据集中的每条记录,并为每一列向网格中添加一次该项。只需添加一次列和一次项

var leagueTable_Object =
    JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);

DataGridTextColumn name = new DataGridTextColumn();
name.Binding = new Binding("name");
League_DataGrid.Columns.Add(name);

DataGridTextColumn points = new DataGridTextColumn();
points.Binding = new Binding("points");
League_DataGrid.Columns.Add(points);

DataGridTextColumn playedGames = new DataGridTextColumn();
playedGames.Binding = new Binding("playedGames");
League_DataGrid.Columns.Add(playedGames);

DataGridTextColumn goals = new DataGridTextColumn();
goals.Binding = new Binding("goals");
League_DataGrid.Columns.Add(goals);

DataGridTextColumn goalsAgainst = new DataGridTextColumn();
goalsAgainst.Binding = new Binding("goalsAgainst");
League_DataGrid.Columns.Add(goalsAgainst);

DataGridTextColumn goalsDifference = new DataGridTextColumn();
goalsDifference.Binding = new Binding("goalsDifference");
League_DataGrid.Columns.Add(goalsDifference);

foreach (var classifica in leagueTable_Object.standing)
{
    League_DataGrid.Items.Add(new LeagueTable.Classifica
    {
        name = classifica.position + " " + classifica.teamName,
        points = classifica.points,
        playedGames = classifica.playedGames,
        goals = classifica.goals,
        goalsAgainst = classifica.goalsAgainst,
        goalsDifference = classifica.goalDifference
    });

}

您正在遍历数据集中的每条记录,并为每一列向网格中添加一次该项。只需添加一次列和一次项

var leagueTable_Object =
    JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);

DataGridTextColumn name = new DataGridTextColumn();
name.Binding = new Binding("name");
League_DataGrid.Columns.Add(name);

DataGridTextColumn points = new DataGridTextColumn();
points.Binding = new Binding("points");
League_DataGrid.Columns.Add(points);

DataGridTextColumn playedGames = new DataGridTextColumn();
playedGames.Binding = new Binding("playedGames");
League_DataGrid.Columns.Add(playedGames);

DataGridTextColumn goals = new DataGridTextColumn();
goals.Binding = new Binding("goals");
League_DataGrid.Columns.Add(goals);

DataGridTextColumn goalsAgainst = new DataGridTextColumn();
goalsAgainst.Binding = new Binding("goalsAgainst");
League_DataGrid.Columns.Add(goalsAgainst);

DataGridTextColumn goalsDifference = new DataGridTextColumn();
goalsDifference.Binding = new Binding("goalsDifference");
League_DataGrid.Columns.Add(goalsDifference);

foreach (var classifica in leagueTable_Object.standing)
{
    League_DataGrid.Items.Add(new LeagueTable.Classifica
    {
        name = classifica.position + " " + classifica.teamName,
        points = classifica.points,
        playedGames = classifica.playedGames,
        goals = classifica.goals,
        goalsAgainst = classifica.goalsAgainst,
        goalsDifference = classifica.goalDifference
    });

}


为什么你有六次“姓名绑定”?我想` name.Binding',points.Binding',playedGames.Binding',goals.Binding',goalsAgains.Binding',goalsDifference.Binding'。在xaml使用中,是的,是我在复制和粘贴第一个元素后的错误。我忘了替换它。我已经在XAML中有了它,看到我上传的第三张图片了。为什么你有“name.Binding”六次?我想` name.Binding',points.Binding',playedGames.Binding',goals.Binding',goalsAgains.Binding',goalsDifference.Binding'。在xaml使用中,是的,是我在复制和粘贴第一个元素后的错误。我忘了替换它。我已经在XAML中有了它,看到我上传的第三张图片了。为什么你有“name.Binding”六次?我想` name.Binding',points.Binding',playedGames.Binding',goals.Binding',goalsAgains.Binding',goalsDifference.Binding'。在xaml使用中,是的,是我在复制和粘贴第一个元素后的错误。我忘了替换它。我已经在XAML中有了它,看到我上传的第三张图片了。为什么你有“name.Binding”六次?我想` name.Binding',points.Binding',playedGames.Binding',goals.Binding',goalsAgains.Binding',goalsDifference.Binding'。在xaml使用中,是的,是我在复制和粘贴第一个元素后的错误。我忘了替换它。我已经在XAML中有了它,请参阅上传的第三张图片。我已经用您的解决方案的图片更新了问题。@HaroldFinch如果您已经正确设置了XAML,然后只需删除
foreach
上方的行,因为它们不是必需的。现在每个团队都完美地放置在数据网格中,但有一些列是空的,并且在最后一列中重复“differentizareti”。。为什么会发生这种情况?好吧,我删除了foreach上面的代码,所有的代码都显示得很好,没有值放在空白的标题单元格中。只有一个问题:每行最后一个单元格为空,我已经将“autogenerate”列设置为false,现在有什么问题?我已经用解决方案的图像更新了问题。@HaroldFinch如果您已经正确设置了Xaml,然后只需删除
foreach
上方的行,因为它们不是必需的。现在每个团队都完美地放置在数据网格中,但有一些列是空的,并且在最后一列中重复“differentizareti”。。为什么会发生这种情况?好吧,我删除了foreach上面的代码,所有的代码都显示得很好,没有值放在空白的标题单元格中。只有一个问题:每行最后一个单元格为空,我已经将“autogenerate”列设置为false,现在有什么问题?我已经用解决方案的图像更新了问题。@HaroldFinch如果您已经正确设置了Xaml,然后只需删除
foreach
上方的行,因为它们不是必需的。现在每个团队都完美地放置在数据网格中,但有一些列是空的,并且在最后一列中重复“differentizareti”。。为什么会发生这种情况?好吧,我删除了foreach上面的代码,所有的代码都显示得很好,没有值放在空白的标题单元格中。只有一个问题:每行最后一个单元格为空,我已经将“autogenerate”列设置为false,现在有什么问题?我已经用解决方案的图像更新了问题。@HaroldFinch如果您已经正确设置了Xaml,然后只需删除
foreach
上方的行,因为它们不是必需的。现在每个团队都完美地放置在数据网格中,但有一些列是空的,并且在最后一列中重复“differentizareti”。。为什么会发生这种情况?好吧,我删除了foreach上面的代码,所有的代码都显示得很好,没有值放在空白的标题单元格中。只有一个问题:每行最后一个单元格为空,我已经将“autogenerate”列设置为false,现在有什么问题?