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

如何使这个看起来像这样:WPF布局问题

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

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

,而无需使用网

+2

堆栈面板的行为不像网格,因为它不是网格。它的目的是成为一个堆栈面板。如果它的行为像一个网格,它将成为一个网格。 Sorta喜欢按钮如何表现不同于文本框和鸟类不在我的草坪下隧道。 – Will 2009-08-14 13:02:46

+0

你是什么意思让它看起来像那样?以什么方式? – Carlo 2009-08-14 15:49:03

+0

我的意思是堆叠面板占据整个窗口,突出像电网 – Omu 2009-08-17 05:57:39

回答

2

简答:你不能。

长答案:编写自定义面板并覆盖ArrangeOverride和MeasureOverride以模拟网格行为。

StackPanel将其每个子元素排列为使用最小高度(如果Orientation == Horizo​​ntal,则使用最小宽度)。 StackPanel不提供任何属性来改变这种行为。另一方面,网格除非另有说明,否则会将所有可用空间平均分配给每个孩子(或者说是行/列)。

5

你可以试试:

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

不够灵活全吹Grid,但更易于使用...

+0

该死的。它。 – Will 2009-08-14 13:05:12

+0

借调。不能相信我错过了那个。 – Bubblewrap 2009-08-14 13:08:21

+0

解决了我的问题,谢谢! – si618 2009-11-06 09:42:52