3

有人可以帮助我了解 WPF 拉伸对齐方式。我经常遇到我想要一个控件来填充一个区域但我不明白我应该把 VerticalAlignment="Stretch" 放在什么级别的问题。特别是当涉及用户控件时。

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

让我们以我现在得到的例子为例:

  • 我有一个带有固定大小单元格的网格(可以使用 GridSplitter 调整大小)
  • 在这个单元格中,我有一个包含 StackPanel 和 TabControl 的 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 和边距)。

4

1 回答 1

3

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

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

看看这篇msdn文章......希望这会有所帮助:)

于 2009-12-02T08:06:36.513 回答