谁能帮我理解 WPF 拉伸(stretch)对齐。我经常遇到这样的问题,我想要一个控件来填充一个区域,但我从来不明白我应该把 VerticalAlignment="Stretch"放在什么级别。特别是当涉及到用户控件时。
我总是通过尝试不同的事情或在各个层面上进行拉伸(stretch)来解决问题,但我想了解如何正确地做到这一点。
让我们以我现在得到的例子为例:
- 我有一个带有固定大小单元格的网格(可以使用 GridSplitter 调整大小)
- 在这个单元格中,我有一个 UserControl,其中包含一个带有 TabControl 的 StackPanel
- 在 TabControl 中,我有包含另一个带有 ListView 的 UserControl 的 TabItems
或者在某种伪 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 和边距)。
最佳答案
您的 ListView 将填充您的 MyUserControl2 - 如果您希望它适合整个选项卡,您需要确保删除 UserControl 的 xaml 文件中的高度和宽度约束(这些将默认为每个 300)
编辑:抱歉 - 我跳过了您的 xaml 的重要部分...MyUserControl1 容器是一个 StackPanel...这将堆叠子控件并调整大小以适合它们;如果您用 DockPanel(或 Grid)替换它,子控件将填充可用空间并为您提供您想要的结果...
看看this msdn 文章...希望这有帮助:)
关于WPF 对齐拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831286/