2009-07-30 7 views
1

Ich habe genau das gleiche Problem wie das Hinzufügen zitiert (genommen Form here, aber nicht beantwortet):Problem Leinwänden zu einem Stackpanel in Code in wpf

I Kontrollen an den Stackpanel über StackPanel.Childrens.Add hinzufügen().

Aber was ich sehe - alle Steuerungen, von mir hinzugefügt, sind in der gleichen Position und überlappen einander. Sie sind nicht Layout innerhalb von StackPanel.

Sogar StackPanel.UpdateLayout() bringt mich nichts.

ich für mich Canvas es hinzuzufügen, ich versuche, (ja ich sie brauche) an die StackPanel. Irgendwelche Ideen?

+0

Fügen Sie Canvases oder UserControls hinzu? Haben Sie (doppelt) überprüft, dass sie keine Positions-/Größeninformationen haben? Vielleicht solltest du ein wenig Code schreiben. –

Antwort

7

Haben Sie explizite Größen auf Ihren Leinwänden festgelegt? Die Größe von Canvases wird nicht an ihren Inhalt angepasst. Wenn Sie also die Größe des Canvas nicht explizit angeben, werden alle Inhalte übereinander angezeigt, wenn Sie sie alle in einem Stapelbereich ablegen. Dies liegt daran, dass die Position (0,0), zu der Canvas-Kinder relativ positioniert sind, oben links im Stackpanel liegt (derselbe Punkt für alle Canvases und alle ihre untergeordneten Elemente).

Versuchen Sie, die folgenden in Kaxaml die Situation zu markieren:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    <StackPanel> 
    <Canvas> 
     <TextBlock Text="Child of canvas one" /> 
    </Canvas> 
    <Canvas> 
     <TextBlock Text="Child of canvas two" /> 
    </Canvas> 
    </StackPanel> 
</Page> 

Hier finden Sie die zwei Zeilen Text zu sehen sind oben auf einander überlagert.

Nun versuchen Sie dies:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    <StackPanel> 
    <Canvas Height="15"> 
     <TextBlock Text="Child of canvas one" /> 
    </Canvas> 
    <Canvas Height="15"> 
     <TextBlock Text="Child of canvas two" /> 
    </Canvas> 
    </StackPanel> 
</Page> 

Und Sie werden den Abstand Sie wünschen zu sehen.

Hoffe, dass hilft.

+0

hatte ich für alle Elemente darin, nicht für die anderswo schön präsentierende Leinwand ... Tx Mann – Peter