2011-04-03 84 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