【发布时间】:2014-01-29 00:43:06
【问题描述】:
我想将我的所有信息从 XML 获取到 Datagrid。
目前我有这个:
class ColumnNames
{
public string id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Computer { get; set; }
public ColumnNames(
string id,
string Name,
string Surname,
string Computer,
{
this.id = id;
this.Name = Name;
this.Surname = Surname;
this.Computer = Computer;
}
}
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
XDocument getElement = XDocument.Load("details.xml");
foreach (var npc in getElement.Descendants("user"))
{
string id = npc.Attribute("id").Value;
string Name = npc.Attribute("Name").Value;
string Surname = npc.Attribute("Surname").Value;
string Computer = npc.Attribute("Computer").Value;
var items = new List<ColumnNames>();
items.Add(new ColumnNames(id, Name, Surname, Computer));
var grid = sender as DataGrid;
grid.ItemsSource = items;
}
}
这是我的 XML
<info>
<user id="1" Name="Max0" Surname="0test" Computer="0" />
<user id="2" Name="Max1" Surname="1test" Computer="1" />
<user id="3" Name="Max2" Surname="2test" Computer="2" />
<user id="4" Name="Max3" Surname="3test" Computer="3" />
<user id="5" Name="Max4" Surname="4test" Computer="4" />
<user id="6" Name="Max5" Surname="5test" Computer="5" />
</info>
我想要做的是将根元素中的所有数据放入包含 id、name、surname 和 computer 列的数据网格中。我的问题是,目前它只获得第一个条目,并且当我尝试使用以下内容时:
foreach (var npc in getElement.Root("info"))
我收到一个错误提示
“不可调用的成员‘System.Xml.Linq.XDocument.Root’不能使用 像一种方法。”
我不知道如何才能完成这项工作,我一直在努力解决这个问题已经有一段时间了,一些帮助会很好。谢谢。
更新:
这是大卫慷慨帮助我后的新代码。虽然还是不行。
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
// getElement is a weird name for this object :)
XDocument getElement = XDocument.Load("details.xml");
// Create your List of ColmNames outside the foreach to use later
var items = new List<ColumnNames>();
foreach (var npc in getElement.Root.Elements("user"))
{
string id = npc.Attribute("id").Value;
string Name = npc.Attribute("Name").Value;
string Surname = npc.Attribute("Surname").Value;
string Computer = npc.Attribute("Computer").Value;
items.Add(new ColumnNames(id, Name, Surname, Computer));
}
// Finally, get a reference to the grid and set the ItemsSource property to use
// your full list containing all the items
var grid = sender as DataGrid;
grid.ItemsSource = items;
}
【问题讨论】:
-
您确定正在调用 DataBind() 吗?您是否已通过调试器并正在执行此代码。代码对我来说看起来不错。
-
它只经过一次,其余的都不会经过。
-
执行一次,foreach 循环? 1. 确保您的 XML 文件正确。 2. 确保正确重建解决方案并运行新代码。