سؤال

وأريد أن يكون لها تحكم العضو الذي يأخذ مجموعة من الناس (الممتلكات "البيانات") ويعرضها في مربع القائمة. عند تشغيل التطبيق الخاص بي شيئا يظهر في مربع القائمة. يمكنك يرجى الإشارة إلى ما أفعله خطأ؟ بفضل!

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 تسيطر قائمة العناصر التي يتم عرضها في مربع القائمة. إذا كنت ترغب في مربع القائمة لعرض سطر واحد لكل شخص، تحتاج إلى تعيين ItemsSource لربط مباشرة إلى 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