Je lie une liste d'objets à un ComboBox.Pourquoi DisplayMemeberPath n'accepte pas une propriété standard?
<ComboBox Name="comboPerson" DisplayMemberPath="Name"/>
Lorsque le code regarde derrière comme ceci:
List<Person> myFriends = new List<Person>()
{
new Person("Jack", "Daniels", 8),
new Person("Milla", "Jovovovich", 35),
new Person("Umma", "Turman", 34)
};
comboPerson.ItemsSource = myFriends;
Et si je l'utilise Propriétés standart, il ne montre pas le nom mais, si la propriété est accessible via get accesseurs il fonctionne. Voici ce que je veux dire:
version de travail:
public string Name { get; set; }
public string Surnamge { get; set; }
public int Age { get; set; }
public Person(string name, string surname, int age)
{
this.Name = name;
this.Surnamge = surname;
this.Age = age;
}
Non version de travail:
public string Name;
public string Surnamge;
public int Age;
public Person(string name, string surname, int age)
{
this.Name = name;
this.Surnamge = surname;
this.Age = age;
}
La question est: pourquoi WPF ne parvient pas à obtenir la valeur d'une propriété standard?
Mais que dois-je faire si la bibliothèque de classes utilise des champs au lieu de propriétés? Comment puis-je lier à ceux alors? – Vitalij
Vous ne pouvez pas lier à des champs. Vous pouvez écrire une classe wrapper qui prend une instance de la classe de bibliothèque et expose ses champs en tant que propriétés. – Botz3000
Et pour obtenir le mécanisme de notification dans ma classe wrapper dois-je vérifier les changements dans la bibliothèque toutes les n secondes, puis augmenter l'événement PropertyCnaged? – Vitalij