2008-12-23 5 views
1

J'ai créé un contrôle utilisateur à l'aide de WPF et je souhaite l'ajouter à la fenêtre. Je l'ai fait, mais je ne peux pas faire en sorte que mon contrôle ait une hauteur supérieure à la hauteur de son propre fichier xaml. Mes MaxWidth et MaxHeight sont tous les deux infinis, mais je ne peux pas rendre le contrôle plus grand que ce qu'il est dans son fichier xaml.Comment créer un contrôle utilisateur dont la taille peut être supérieure à sa taille créée avec WPF

Pour contourner ce problème, je dois faire tout mon contrôle utilisateur énorme donc je vais pouvoir les dimensionner à ce que je veux. Cela ne semble pas juste, je dois manquer quelque chose.

Répondre

0

Pourquoi vous voulez que votre contrôle pour avoir une hauteur supérieure à la hauteur qu'il a dans son propre fichier XAML? Ne pourriez-vous pas simplement supprimer la hauteur dans le fichier XAML du contrôle, et définir explicitement la hauteur du contrôle lorsque vous le déclarez dans les autres fichiers XAML (ou code) qui l'utilisent?

0

Si je retire la hauteur et la largeur dans le contrôle fichier XAML je perds la possibilité d'utiliser le concepteur pour mon contrôle utilisateur. Donc, une réponse courte, qui a résolu mon problème, mais maintenant je ne peux pas utiliser le concepteur pour les contrôles utilisateur. Ça ne me semble pas être mieux.

0

Le problème pourrait être que les contrôles internes dans votre contrôle utilisateur ne s'étendent pas à votre contrôle. Essayez de définir HorizontalAlignment = "Stretch" ou Width = "Auto" sur les contrôles internes, ou vous pourriez essayer de lier la propriété Width.

0

Ok, après quelques recherches, je me suis mal exprimé. C'est la grille qui cause le problème. Si je mets la largeur et la hauteur de la grille à Auto alors tout fonctionne bien, mais je perds la possibilité d'utiliser le concepteur.

J'ai tous les alignements mis à Étirez tant pour la grille et ses contrôles. Donc, en résumé, tout fonctionne bien si je mets Grid.Width = Auto et Grid.Height = Auto, mais quand je fais cela, je perds la possibilité d'utiliser le concepteur.

+0

Vous pouvez définir les propriétés sur Auto dans l'événement Load à la place. –

2

Enlever la hauteur et la largeur est la voie à suivre. Le concepteur (blend) possède des propriétés de largeur et de hauteur de conception spéciales qu'ils peuvent utiliser pour concevoir, mais ne définira pas la hauteur pour l'exécution.

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignWidth="412" d:DesignHeight="230" 

C'est le xaml qui sera en haut de la fenêtre/UserControl. This devrait aider à expliquer les choses.

0

Je ne suis pas au courant de tous les attributs largeur/hauteur pour le concepteur VS si c'est ce que vous utilisez. Cependant, j'ai assez bien utilisé les attributs MinWidth/MinHeight dans mon xaml pour faire face à la situation que je pense que vous décrivez.

Questions connexes