2009-12-02 61 views
2

有人可以帮助我理解WPF拉伸对齐。我经常碰到一些问题,我想要一个控件来填充一个区域,但我从不明白我应该把VerticalAlignment =“Stretch”放在哪个级别上。特别是在涉及UserControl时。WPF对齐拉伸

我总是通过尝试不同的东西来解决问题,或者在各个层面上进行拉伸,但我想了解如何正确地做到这一点。

让我们我现在得到了例如:

  • 我有一个固定大小的小区(其可以与一个GridSplitter调整大小)
  • 在该小区中的网格我有包含与一个StackPanel一个用户控件一个TabControl
  • 在TabControl的我有一个包含用户控件的另一个与一个ListView

或者在某种伪XAML

的TabItems
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0"> 
    <!-- this is in MyUserControl1 --> 
    <StackPanel> 
     <TabControl> 
      <TabItem> 
       <ns:MyUserControl2> 
        <!-- This is in MyUserControl2 --> 
        <ListView/> 
       </ns:MyUserControl2> 
      </TabItem> 
     </TabControl> 
    </StackPanel> 
</ns:MyUserControl> 

现在我想让ListView填充整个网格单元格(当然不包括TabControl和边距)。

回答

3

您的ListView将会填充您的MyUserControl2 - 如果您希望这适合整个Tab,您需要确保您删除UserControl的xaml文件中的高度和宽度约束(默认值为300)

编辑:道歉 - 我跳过了你的xaml的重要部分... MyUserControl1容器是一个StackPanel ...这将堆叠子控件和调整大小,以适应他们;如果你用一个DockPanel(或一个网格)替换它,子控件将填充可用空间并给你后面的结果...

看看this msdn文章...希望这有助于: )

+0

你说得对。阅读文章后,我明白我的问题通常与StackPanel有关。现在我明白什么时候使用DockPanel。 – adrianm 2009-12-02 10:19:41