【问题标题】:WPF alignment stretchWPF对齐拉伸
【发布时间】:2010-12-22 07:46:06
【问题描述】:

谁能帮我理解 WPF 拉伸对齐。我经常遇到我想要一个控件来填充一个区域的问题,但我从来不明白我应该把 VerticalAlignment="Stretch" 放在哪个级别。特别是当涉及到 UserControls 时。

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

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

  • 我有一个带有固定大小单元格的网格(可以使用 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 和边距)。

【问题讨论】:

    标签: wpf vertical-alignment stretch


    【解决方案1】:

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

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

    看看thismsdn 的文章...希望这会有所帮助:)

    【讨论】:

    • 你是对的。阅读文章后,我了解到我的问题通常与 StackPanel 有关。现在我明白何时改用 DockPanel。
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多