我的问题是如何将数据文件附加到XAML? 使数据名称,图像,年龄显示ListBox。问题数据绑定列表框
有一类人:
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;
}
}
}
}
正确的名字是'ObservableCollection'而不是'ObservableList',我编辑了我的答案。 –
实际上,ListBox的ItemsSource必须被设置,而不是它的DataContext。如果你只设置了DataContext,你还需要像'ItemsSource =“{Binding}”''。 – Clemens
@Clemens谢谢,我会更新我的答案。 –