문제

사람들 모음 (속성 "데이터")을 가져 와서 목록 상자에 표시하는 사용자 컨트롤을 원합니다. 앱을 실행하면 Listbox에 아무것도 표시되지 않습니다. 내가 뭘 잘못하고 있는지 지적 해 주시겠습니까? 감사!!!

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}" />
도움이 되었습니까?

해결책

항목 소스 속성은 ListBox에 표시된 항목 목록을 제어합니다. ListBox가 각 사람의 한 줄을 표시하려면 Datacontext에 직접 바인딩하기 위해 항목 소스를 설정해야합니다. 그런 다음 DisplayMemberPath 속성을 사용하여 표시 할 사람 클래스의 속성을 제어합니다.

다음은 저에게 맞는 샘플 코드입니다. 사람 수업은 동일합니다.

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" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top