WPF对齐拉伸

时间:2009-12-02 07:53:29

标签: wpf vertical-alignment stretch

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

我总是通过尝试不同的事情或在所有级别上进行伸展来解决问题,但我想了解如何正确地做到这一点。

让我们看看我现在的例子:

  • 我有一个固定大小的网格(可以使用GridSplitter调整大小)
  • 在这个单元格中,我有一个包含带TabControl的StackPanel的UserControl
  • 在TabControl中我有TabItems包含另一个带有ListView的UserControl

或某种伪XAML

<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和边距)。

1 个答案:

答案 0 :(得分:3)

你的ListView将填充你的MyUserControl2 - 如果你想让它适合整个标签,你需要确保删除UserControl的xaml文件中的高度和宽度约束(这些约束默认为300)

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

看一下this msdn文章......希望这会有所帮助:)