C# 已解析的XML到Listbox
我已经用这个简单的代码做了类似的事情:C# 已解析的XML到Listbox,c#,xml,listbox,C#,Xml,Listbox,我已经用这个简单的代码做了类似的事情: var data = from query in xml.Descendants("item") select new Object { Element = (string)query.Element("element"), }; listBox.ItemsSource = dat
var data = from query in xml.Descendants("item")
select new Object
{
Element = (string)query.Element("element"),
};
listBox.ItemsSource = data;
但是我还必须处理嵌套的XML,所以我担心代码无法处理该文件,所以我遵循了这个主题,现在我不知道如何在列表框中显示数据
我使用此类序列化XML:
{
[XmlRoot("contacts")]
public class Contacts
{
[XmlElement("building")]
public Building[] BuildingList { get; set; }
}
public class Building
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("address")]
public string Address { get; set; }
[XmlElement("tel")]
public string Tel { get; set; }
[XmlElement("email")]
public string Email { get; set; }
[XmlElement("link")]
public string Link { get; set; }
[XmlElement("timing")]
public string Timing { get; set; }
[XmlArray("contacts"), XmlArrayItem("contact")]
public Contact[] ContactList { get; set; }
}
[XmlRoot("contact")]
public class Contact
{
[XmlElement("surname")]
public string Surname { get; set; }
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("area")]
public string Area { get; set; }
[XmlElement("role")]
public string Role { get; set; }
[XmlElement("tel")]
public string Tel { get; set; }
[XmlElement("email")]
public string email { get; set; }
}
这是我的列表框:
<ListBox x:Name="listBox_buildings">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel VerticalAlignment="Top">
<TextBlock x:Name="text_title" Foreground="Black" FontSize="25" TextWrapping="Wrap" HorizontalAlignment="Stretch" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
有人有线索吗?谢谢如果不知道您是如何实施链接问题中提出的解决方案,很难说。假设您有一个Users类来映射XML,如下所示:
public class Users
{
[XmlElement("user")]
public User[] UserList { get; set; }
}
您可以这样在列表框中显示数据,例如:
XmlSerializer ser = new XmlSerializer(typeof(Users));
var u = (Users)ser.Deserialize(stream);
listBox.ItemsSource = u.UserList;
更新:
根据您发布的新信息,您可以尝试以下方法:
XmlSerializer ser = new XmlSerializer(typeof(Contacts));
var u = (Contacts)ser.Deserialize(stream);
listBox_buildings.ItemsSource = u.BuildingList;
Mm编译器告诉我:“System.Windows.Controls.ListBox”不包含“ItemSource”的定义,并且找不到接受“System.Windows.Controls.ListBox”类型的第一个参数的扩展方法“ItemSource”。是否缺少using指令或程序集引用?我在我原来的帖子中添加了新的信息,我也尝试过同样的方法,但它给了我上面写的错误