2009-08-14 79 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