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,现在有什么问题?