Вопрос: как подключить файл данных к XAML? , чтобы отображались данные Name, Images, Age ListBox.Проблемы привязки данных Список
Существует класс Person:
public string Name { get; set; }
public string Images { get; set; }
public string Age { get; set; }
Существует XML-файл Список пользователей задается (около 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>
кода -behind
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', я отредактировал свой ответ. –
На самом деле, «ItemsSource» ListBox должен быть установлен, а не «DataContext». Если вы установите только DataContext, вам также понадобится нечто вроде 'ItemsSource =" {Binding} "'. – Clemens
@Clemens Спасибо, я уточню свой ответ. –