如何使ItemsControl适合其内容而不是垂直扩展而不考虑其兄弟元素?

时间:2016-08-13 03:09:57

标签: c# .net wpf xaml

我正在开发一个WPF应用程序,其布局类似于以下示例中定义的XAML:

drawbox

从视觉上看,它看起来像这样: Application layout

简单地说,布局根是一个包含3列的网格;左列和右列只是间隔符,中间列包含2个用户控件(在上面的示例中由2个网格表示)。

我想要实现的目标如下:

  1. 如果有足够的垂直空间,我希望ItemsControl不显示滚动条,按钮显示在项目正下方(不在其包含面板的底部)。

  2. 如果没有足够的垂直空间,我希望ItemsControl显示一个滚动条,而不是垂直扩展,有效地将按钮踢出视图。

  3. 所需布局的可视示例如下面的屏幕截图所示: Desired layout

    我尝试的所有东西似乎都是:

    1. 当有足够的空间或
    2. 时,将“打开”按钮停靠在底部
    3. 由于ItemsControl垂直展开,当空间不足时,将“打开”按钮踢出视图。
    4. 我有什么方法可以达到所需的布局(无论是XAML还是代码)?

1 个答案:

答案 0 :(得分:1)

用顶部对齐的网格替换StackPanel:

<!-- Row 2: another User Control -->
<Grid VerticalAlignment="Top" Grid.Row="2">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <ItemsControl>
            ...
        </ItemsControl>
    </ScrollViewer>

    <Button Grid.Row="1" HorizontalAlignment="Left" Content="Open" />
</Grid>