2009-08-14 6 views
0
<Window ... > 
    <StackPanel> 
     <Button>b1</Button> 
     <Button>b2</Button> 
    </StackPanel> 
</Window> 

comment faire ce ressembler à ceci:WPF question de mise en page

<Window ...> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition></RowDefinition> 
      <RowDefinition></RowDefinition> 
     </Grid.RowDefinitions> 

     <Button>b1</Button> 
     <Button Grid.Row="1">b2</Button> 
    </Grid> 
</Window> 

sans utiliser une grille

+2

Un panneau de pile ne se comporte pas comme une grille car il n'est pas destiné à être une grille. C'est censé être un panneau de pile. Si cela devait servir de grille, ce serait une grille. Sorta comme les boutons se comportent différemment des boîtes de texte et les oiseaux ne tunnel sous ma pelouse. – Will

+0

Que voulez-vous dire faire ressembler à ça? De quelle façon? – Carlo

+0

je voulais dire pour le panneau de la pile pour occuper toute la fenêtre, comme la grille – Omu

Répondre

2

Réponse courte: Vous ne pouvez pas. Réponse longue: Écrivez un panneau personnalisé et remplacez ArrangeOverride et MeasureOverride pour simuler le comportement de la grille. StackPanel organise chacun de ses éléments enfants pour utiliser une hauteur minimale (ou une largeur minimale si Orientation == Horizontal). StackPanel n'offre aucune propriété pour modifier ce comportement. En revanche, sauf indication contraire, la grille divisera tout l'espace disponible de manière égale entre chaque enfant (ou plutôt ligne/colonne).

5

Vous pouvez essayer:

<Window ... > 
    <UniformGrid Rows="2" Columns="1"> 
     <Button>b1</Button> 
     <Button>b2</Button> 
    </UniformGrid> 
</Window> 

pas aussi flexible que plein soufflé Grid, mais plus simple à utiliser ...

+0

Damn. Il. – Will

+0

Appuyé. Je ne peux pas croire que j'ai raté ça. – Bubblewrap

+0

Résolu mon problème, merci! – si618