привязка данных wpf

494
17 января 2017, 22:22

Есть класс Person

public class Person
{
    public string Name { get; set; }
    public string Images { get; set; }
    public string Age { get; set; }
}

Есть xml файл UsersList

 <?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>

code-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;
                    }
                }
            }
        }

У меня такой вопрос как правильно привязать файл данные к XAML? Я понимаю что можно сделать:

Person user1 = new Person { Name = "Bill Gates", Age = 48, Images = "" };
Person user2 = new Person { Name = "Larry Page", Age = 42, Images = "" };
List<Person> users = new List<Person> { user1, user2 };

и все круто будет, но если список будет 100 человек, не вариант вручную вносить. Да и редактировать и удалять проблематично.

READ ALSO
Возврат строки из Main()

Возврат строки из Main()

Подскажите, пожалуйста, реально каким-то образом вернуть строку из программы? Скажем, из одной программы я вызываю другую, которая должна...

350
Полиморфизм в методах

Полиморфизм в методах

Изучаю c# поэтому возник вопрос про полиморфизмСам пробовал писать но успеха не добился поэтому спрашиваю у специалистов

333
.Net и хранение секретного токена

.Net и хранение секретного токена

Допустим есть WPF программа, которая работает клиентом через сетевое соединениеПользователь программы ввел свои имя:пароль и в ответ от сервера...

342
Передать данные из UserControl в форму

Передать данные из UserControl в форму

Есть главная форма, при нажатии на кнопку происходит открытие формы, в дочерней форме подгружается контролВопрос заключается в следующем:...

427