2009-02-26 8 views
0

J'ai un canevas personnalisé sur lequel je peux déposer des contrôles, les déplacer et les redimensionner. Je dois pouvoir au moins commencer avec une taille prédéterminée, mais ensuite permettre le redimensionnement.WPF - Dimensionnement UserControl sur canevas personnalisé

Mon problème est que j'ai un contrôle utilisateur qui ne semble pas redimensionner. J'ai placé la taille et la largeur sur le contrôle d'utilisateur (fonctionne sur la baisse). Mais alors que le contrôle est redimensionné sur la toile, la taille visuelle reste la même (les poignées de dimensionnement changent). Je peux voir la propriété Height changer (usercontrol.height) comme le contrôle est redimensionné. Mais encore une fois, l'apparence du contrôle reste la même taille.

Je pensais que le conteneur interne sur le contrôle utilisateur devait être lié à la commande usercontrol.height, mais cela ne semblait pas aider. (ou peut-être que je n'ai pas eu le droit de liaison).

Sur le même canevas, si le contrôle échappé est par exemple un contrôle Image, je peux définir une hauteur explicite sur le drop et tout redimensionne comme il se doit. Donc, il semble être chose UserControl.

Y a-t-il quelque chose de spécial que je dois faire avec UserControls pour redimensionner les visuels? Dois-je utiliser une hauteur et une largeur explicites pour que tout commence?

Merci pour toute aide.

Répondre

2

Le système de mise en page WPF peut prêter à confusion, comme vous l'avez découvert. Il n'y a pas de substitut à une compréhension solide du système de disposition et de mesure. Si vous envisagez de faire beaucoup de développement WPF, cela vaut la peine de prendre 20 minutes pour lire this article on the layout system puis d'expérimenter pendant un certain temps dans un environnement itératif tel que Kaxaml jusqu'à ce que vous vous sentiez à l'aise.

Le système est très logique. Cela ne prendra pas longtemps avant que le sou ne tombe. Désolé pour la réponse indirecte, mais je ne crois pas qu'il y ait assez d'information dans votre question pour vraiment expliquer ce qui se passe. Vous pouvez également consulter les propriétés HorizontalAlignment et VerticalAlignment.

0

Je ne suis pas un expert de WPF, mais je crois que vous devez activer le dimensionnement automatique pour atteindre le scénario que vous recherchez. Ceci est fait en définissant la hauteur/largeur d'un contrôle à Double.NaN qui dit essentiellement, "je n'ai pas de taille spécifique". Une fois que vous faites cela, le contrôle devrait redimensionner pour occuper l'espace disponible en fonction du besoin du contrôle.