Je travaille sur une application WPF similaire à visio. J'aimerais pouvoir regrouper logiquement certains des éléments de mon diagramme, dont chacun est un UIElement, et contrôler certains comportements (c'est-à-dire la visibilité) au niveau du groupe. Ma première tentative à ceci était de créer un contrôle, appelé un groupe, qui avait la largeur & height = 0. Je voulais assigner à mes éléments de diagramme un "groupe" spécifique à travers leur propriété de groupe, puis lier certains UIElement propriétés à la valeur du groupe, comme ci-dessous:WPF Lier à DependencyProperty d'un autre objet?
<DiagramNode
Width="300" Height="300"
Visibility="{Binding RelativeSource={RelativeSource Self},Path=Group.Visibility}"
> ... </DiagramNode >
Bien que cela ne génère pas d'erreur de liaison, cela ne fonctionne pas non plus. La modification de la visibilité du groupe n'a aucun effet sur la visibilité des noeuds affectés à ce groupe. Aucune erreur n'apparaît à tout moment autant que je peux dire, cela ne fonctionne tout simplement pas.
Des idées? Est-ce que mon approche est possible? Si non, quelqu'un a des alternatives qu'ils aimeraient suggérer :). Je ne suis pas un grand gars de l'interface utilisateur, je me sens beaucoup plus à l'aise dans une couche de service, donc je suis ouvert à d'autres suggestions.
Merci pour votre réponse Aviad. Je crois que mon objet Groupe implémente INotifyPropertyChanged pour la propriété Visibility, car mon objet Group hérite de UserControl. Accepteriez-vous? – Frank
Lève-t-il réellement l'événement 'PropertyChanged' dans le setter de la propriété' Visibility'? Cela doit être fait explicitement. –
UserControl ne met * pas * en œuvre INotifyPropertyChanged. Toutefois, si Group est un UserControl, alors Group.Visibility est une propriété de dépendance et ne devrait donc pas avoir besoin de générer des notifications de modification pour être une source de liaison. Vous souhaiterez peut-être poster un peu plus de la définition du groupe pour aider à diagnostiquer le problème. – itowlson