【发布时间】:2017-01-16 12:57:15
【问题描述】:
我的问题是如何将数据文件附加到 XAML? 让数据 Name, Images, Age 显示 ListBox。
有一个类Person:
public string Name { get; set; }
public string Images { get; set; }
public string Age { get; set; }
有一个xml文件UsersList (约 100 个用户) xml文件不断编辑
<?xml version="1.0" encoding="utf-8" ?>
<users>
<user name="Bill Gates">
<images>https://pbs.twimg.com/profile_images/558109954561679360/j1f9DiJi.jpeg</images>
<age>48</age>
</user>
<user name="Larry Page">
<images>http://www.siliconbeat.com/wp-content/uploads/2015/06/page.jpg</images>
<age>42</age>
</user>
</users>
XAML
<ListBox x:Name="ListBox" Margin="36,10,273,0" >
<ListBox.DataContext>
<user:Person/>
</ListBox.DataContext>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Image Source="{Binding Images}" />
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
代码隐藏
public MainWindow()
{
InitializeComponent();
Load();
}
public void Load()
{
Person user = new Person();
XmlDocument xDoc = new XmlDocument();
xDoc.Load("UsersList");
XmlElement xRoot = xDoc.DocumentElement;
foreach (XmlNode xnode in xRoot)
{
if (xnode.Attributes.Count > 0)
{
XmlNode attr = xnode.Attributes.GetNamedItem("name");
if (attr != null)
user.Name = attr.Value;
}
foreach (XmlNode childnode in xnode.ChildNodes)
{
if (childnode.Name == "images")
{
user.Images = childnode.InnerText;
}
if (childnode.Name == "age")
{
user.Age = childnode.InnerText;
}
}
}
}
【问题讨论】: