Compte tenu de cet objetXAML se lier à l'élément indexé dans la propriété de la liaison
class Contact
{
public IEnumerable<Person> People { get; }
public string PhoneNumber { get; }
}
class Person
{
public string MobileNumber { get; }
}
Et la mise en page suivante
<Contact>
<PhoneNumber/>
<SinglePerson.MobileNumber/>
<People>
<MobileNumber />
</People>
<Contact>
Ce que je voudrais faire est de cacher l'élément populaire quand il n'y a qu'un seul personne, et affiche l'élément numéro SinglePerson.Mobile à la place.
Hiding est assez facile:
<Style.Triggers>
<DataTrigger Binding="{Binding Path=People.Count}" Value="1">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
Affichage est un peu plus délicat:
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=People.Count}" Value="1">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
La seule chose que je ne peux pas travailler comment faire est de lier le <SinglePerson.MobileNumber>
texte à la première personne dans la liste des personnes. J'ai essayé des variantes de "{Binding People [0] .MobilePhone}", mais cela ne fonctionne pas.
Est-ce encore possible?
Cool, fonctionne bien pour moi, je l'ai fait une FirstPersonMobileConverter (je pouvais ont décidé de passer dans le nom de la propriété en tant que paramètre, ce sera pour la prochaine version). – Benjol