Frage

Ich habe genau das gleiche Problem wie angegeben (genommen Form hier , aber nicht beantwortet):

  

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

     

Aber, was ich sehe - alle Steuerelemente hinzugefügt   von mir, in der gleichen Position ist und   einander überlappen. Sie haben nicht zu sein   Layout innerhalb von Stackpanel.

     

Auch StackPanel.UpdateLayout () bringt   ich nichts.

Ich für mich bin versucht Canvases hinzufügen (ja ich sie brauche) an die StackPanel. Irgendwelche Ideen?

War es hilfreich?

Lösung

Haben Sie explizite Größen auf Leinwänden festgelegt? Leinwänden nicht Größe, ihre Inhalte zu passen, so dass, wenn Sie die Größe der Leinwand explizit angeben, wenn Sie sie alle in einem Stapel Panel setzen, deren Inhalt auf der jeweils anderen erscheinen, wie Sie erklären. Dies liegt daran, die (0,0) Position, auf die Leinwand Kinder relativ positioniert sind, wird die linke obere des Stackpanel (der gleiche Punkt für alle Leinwände und alle ihre Kinder) sein.

Versuchen Sie Folgendes in Kaxaml um 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 sehen Sie sich wünschen.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top