2011-04-03 89 views
2

我在尋找一種結合了VerticalAlign="Stretch"VerticalAlign="Top"的行爲。請遵守以下標記:WPF通過MaxHeight垂直對齊拉伸

<Border BorderThickness="2" BorderBrush="Black" MaxHeight="200"> 
    ... 
</Border> 

這就像我打算一樣,直到Border的容器變得大於200高。在這一點上,邊界成爲200高,並在其容器中。

我無法用DockPanel.Dock =「Top」將它包裝在DockPanel中。我也無法將其容器設置爲VerticalAlign =「Top」。原因是這兩個都導致Border不再垂直擴展以填充容器可用空間(最多200個)。

因此,爲了考慮這個問題很好解決,必須執行以下操作:

  • 邊境必須擴大,以填補其母公司的可用空間最多達到其MaxHeight到。
  • 邊框的上邊緣必須符合其父邊緣。
  • 邊框不需要是<Border>
+0

你能在容器中添加標記? – 2011-04-03 03:37:05

+0

是的,可以將標記添加到容器中。 – Kivin 2011-04-04 00:18:30

+0

我的意思是你可以添加一個容器標記的例子嗎?或者它就像下面答案中的網格一樣簡單? – 2011-04-04 03:38:49

回答

2

瞧:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition MaxHeight="200" /> 
     <RowDefinition Height="auto" /> 
    </Grid.RowDefinitions> 
    <Border Background="Yellow" /> 
</Grid> 
+0

起初我也有這個,但是這個解決方案在可能的情況下不會將最上面的一行設置爲200。 – 2011-04-04 08:42:27

+0

是的。覈實。 – 2011-04-04 08:43:27

+0

你說得對,我被旁觀了,對我來說很難理解要求。 – 2011-04-04 08:46:59