2009-05-15 5 views
4

Je me suis cogné la tête contre un mur avec celui-ci pendant un moment maintenant.Problème avec le redimensionnement de ContentControl

J'ai un contrôle personnalisé qui dérive de ContentControl - il fonctionne parfaitement SAUF qu'il ne sera pas redimensionné pour s'adapter à son parent, soit de façon déclarative OU par programmation.

Le contrôle personnalisé est parent dans (en fin de compte) un présentateur de contenu, et est correctement dimensionné, mais mon contrôle ne se taille tout simplement pas pour s'adapter.

(sample.MyControl) - 400x267 
- (System.Windows.Controls.ContentPresenter) - 979x569 

Même quand je définir explicitement la largeur et la hauteur (au bon moment), la taille n'a pas "coller"

 Debug.WriteLine(string.Format("MyControl {0}: Size is {1}x{2} ({3}/{4})", 
      GetHashCode(), this.ActualWidth, this.ActualHeight, 
      this.HorizontalAlignment, this.VerticalAlignment)); 

     Debug.WriteLine(string.Format("Parent is {0}x{1} ({2}/{3})", 
             parent.ActualWidth, parent.ActualHeight, 
             parent.HorizontalAlignment, parent.VerticalAlignment)); 

     this.Width = parent.ActualWidth; 
     this.Height = parent.ActualHeight; 

     Debug.WriteLine(string.Format("MyControl {0}: New size is {1}x{2}", 
      GetHashCode(), this.ActualWidth, this.ActualHeight)); 

Le code ci-dessus donne:

MyControl 36022757: Size is 400x267 (Stretch/Stretch) 
Parent is 979x569 (Stretch/Stretch) 
MyControl 36022757: New size is 400x267 

Pourquoi! Oh dieux pourquoi!

Vous avez des idées?

Répondre

17

Vous avez juste besoin d'ajouter HorizontalContentAlignment="Stretch" et VerticalContentAlignment="Stretch" à votre commande:

<ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
    ... 
</ContentControl> 

Dans de tels cas Silverlight Spy outil peut être utile pour le débogage dans la mise en page de l'exécution. Essayez d'exécuter votre application dans cet outil et vous serez en mesure d'afficher tous les éléments xaml et même de modifier certaines propriétés en cours d'exécution.

+0

Cela a résolu un problème douloureux pour nous, merci! +1 –

+0

Hmm J'espérais que cela fonctionnerait pour le même problème dans WPF, bien que le correctif ne semble pas changer quoi que ce soit. :( – Domokun

+0

Je savais à ce sujet tout le long - s'avère que j'avais besoin de gabarit le conteneur pour les appliquer au contrôle de contenu qui était enroulé autour de mon contrôle. – Rammesses

Questions connexes