2012-05-25 3 views
1

Je travaille sur l'implémentation d'une interface ISrollInfo pour un contrôle personnalisé. Tout simplement, j'ai une étiquette dans mon contrôle personnalisé sous un canevas. Je voudrais que l'étiquette «reste en place» lorsque mon contrôle personnalisé est défilé. C'est-à-dire que l'étiquette doit toujours être visible quel que soit le décalage de défilement.WPF IScrollInfo Position de fixation d'une étiquette

Maintenant, comme un test j'ai ajouté cet exemple de code

protected override Size MeasureOverride(Size constraint) 
    { 
     return new Size(1000, 50); 
    } 

    protected override Size ArrangeOverride(Size arrangeBounds) 
    { 
     double x = 50; 
     double y = 50; 

     label1.Arrange(new Rect(new Point(x, y), new Size(1000, 50))); 
     return arrangeBounds; 
    } 

Lorsque je teste le contrôle (mon contrôle est placé à l'intérieur d'un ScrollViewer), l'étiquette est caché (avant et après que j'utilise la barre de défilement) . Si je supprime le remplacement pour ArrangeOverride, l'étiquette apparaît et défile lorsque j'utilise la barre de défilement.

Des idées sur ce qui me manque?

+0

Trouvé, mon ArrangeOverride est sur le UserControl, où j'arrange spécifiquement seulement l'étiquette, le canevas n'est pas arrangé (c'est-à-dire la position et la taille n'est pas définie). Maintenant, puisque l'étiquette est dans la toile, vous ne pouvez pas le voir. – States

Répondre

0

Trouvé, mon ArrangeOverride est sur le contrôle UserControl, où j'arrange spécifiquement seulement l'étiquette, le canevas n'est pas arrangé (c'est-à-dire la position et la taille n'est pas définie). Maintenant, puisque l'étiquette est dans la toile, vous ne pouvez pas le voir.