Я хочу иметь пользовательский элемент управления, который принимает коллекцию людей (свойство «Данные») и отображает их в поле списка. Когда я запускаю свое приложение, в списке ничего не отображается. Не могли бы вы указать, что я делаю не так? Спасибо!!!
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return Name + "(" + Age + ")";
}
}
Пользовательский контроль: (uc1.xaml.cs)
public partial class uc1
{
public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof (List<Person>), typeof (uc1));
public List<Person> Data
{
get { return (List<Person>) GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
public uc1()
{
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
DataContext = Data;
}
}
(uc1.xaml)
<ListBox ItemsSource = "{Binding Name}" />





Свойство ItemsSource управляет списком элементов, отображаемых в списке. Если вы хотите, чтобы ListBox отображал по одной строке для каждого человека, вам необходимо настроить ItemsSource для непосредственной привязки к DataContext. Затем вы используете свойство DisplayMemberPath для управления отображаемым свойством класса Person.
Вот мой пример кода, который мне подходит. Класс человека такой же.
Window1.xaml.cs:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
List<Person> Data = new List<Person>();
Data.Add(new Person { Name = "Test 1", Age = 5 });
Data.Add(new Person { Name = "Test 2", Age = 10 });
this.DataContext = Data;
}
}
Window1.xaml
<ListBox ItemsSource = "{Binding}" DisplayMemberPath = "Name" />