Comment faites-vous le positionnement relatif dans WPF?
Comment pouvez-vous relativement à positionner les éléments dans WPF?
Le modèle standard est d'utiliser des gestionnaires de disposition pour tout, mais si vous voulez de la position des éléments (sur une Toile, par exemple) en se basant simplement sur la position des autres éléments?
Par exemple, vous souhaitez peut-être un élément (un bouton) pour être fixé du côté de l'autre (peut-être un panneau) indépendamment de la position ou de la mise en page de ce panneau.
Toute personne qui a travaillé avec des outils de conception (SolidWorks, AutoCad, etc.) est familier avec ce genre de positionnement relatif.
Obliger tout en gestionnaires de disposition (les différents WPF Panneaux) ne fait pas beaucoup de sens pour certains scénarios, où vous n'avez pas de soins que les éléments sont conservés par certains conteneur parent et que vous ne voulez pas que les autres enfants d'être affectés par un changement dans la disposition et l'apparence de l'autre. Ne WPF l'appui de cette position relative du modèle en quelque sorte?
- Je ne suis pas sûr que je comprends la question. Pouvez-vous donner un exemple d'une disposition de l'écran que vous ne croyez pas peut être réalisé avec le modèle WPF?
- Je suis d'accord, la question est source de confusion ... il semble comme un simple StackPanel ferait l'affaire.
- Je ne pense pas que c'est déroutant, et un StackPanel serait de gérer uniquement le cas le plus simple. Ce qu'il veut, c'est l'équivalent de RelativeLayout dans Android.
- C'est exactement ça (Android RelativeLayout). Semble comme WPF ne prend pas en charge cette mise en page du scénario. Meilleure solution de contournement que j'ai trouvé est d'enrouler une Toile autour de quel élément de l'INTERFACE utilisateur(s) vous souhaitez positionner par rapport à puis utiliser de la Toile.Haut/Bas/Gauche/Droite pour placer l'élément par rapport aux limites de la toile (et donc enveloppé élément).
Vous devez vous connecter pour publier un commentaire.
Au lieu de mettre (comme dans votre exemple) un bouton directement sur la toile, vous pouvez mettre un stackpanel sur la toile, alignés horizontalement, et de mettre les deux boutons de là.
Comme suit:
Je pense que c'est tout à fait flexible lorsque vous utilisez plus de 1 mise en page d'un formulaire, et vous pouvez créer à peu près n'importe quelle configuration que vous souhaitez.
Bonne question. Autant que je sache, nous avons besoin d'un autre panneau personnalisé pour obtenir cette fonctionnalité. Depuis WPF est basé sur la Hiérarchie Visuelle il n'existe aucun moyen d'avoir ce genre de structure Plane pour les éléments de la plate-forme.
Mais Voici une astuce pour ce faire.
Placez vos éléments dans la même position et donner déplacement relatif en utilisant RenderTransform.TranslateTransform. De cette façon, votre TranslateTransfrom X et Y aura toujours des relatuve de l'autre élément.
Grid
de référence.